glossary, vocabulary, functions.
Constantes
Text GloAllText GloLowSet GloMemText GloTopSet GloDefFunciones
Text GloFind(Text trmTxt)Real GloTest(Set trmKey)Text GloQuote(Text trmTxt)Text GloRand(Text trmLst)Real GloStats(Real numMin)//////////////////////////////////////////////////////////////////////////////
Text GloAll = ReadFile("../../agenda/20.glosario.all");
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Table with all the glossary, terms and their definitions.",
GloAll);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloLow = ToLower(GloAll);
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"All the glossary in lower case for test keywords.",
GloLow);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set GloMem = Copy(Empty);
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Set with the memory of all terms writed.",
GloMem);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloTop = "En vivo|Informática forense|Escenario forense digital|"+
"Perito informático|Perito judicial|Perito|Post-mortem|"+
"Cadena de custodia|Ciencia forense|Prueba digital|Prueba";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Top terms of the glossary. Is a text for use in posts when no other terms
are defined.",
GloTop);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set GloDef = Unique(Txt2Set(
// 2 Bibliografía sobre informática forense y pericial
"Black Hat|CSO|NCJRS|"+
// 4.2 Entidades citadas
"ACM|ANSI|cmdLabs|ECCouncil|Honeynet Project|IEEE|ISO|RedIRIS|"+
"SANS Institute|SWGDE|SWGIT|"+
// 1.1 Herramientas citadas
"Autopsy Forensic Browser|The Sleuth Kit|"+
// 5 Glosario de informática forense y pericial
"Abrir una cuenta|Acceso|Actualización|Administrador de web|"+
"Administrador|Alfanumérico|Anónimo|API|Arc|Bloqueadores de escritura|"+
"Arranque|ASCII|Autenticación|Binario|BIOS|Arquitectura del computador|"+
"Bluetooth|Bombardeo de correo electrónico|Botnet|Caballo de Troya|"+
"Caída del sistema|Ciberespacio|Ciberpunk|Cluster|CMOS|"+
"Codificación redundante|Codificación|Código corrector|Código detector|"+
"Código fuente|Compactación de memoria|Confesión judicial|Contraseña|"+
"Cookie|Copia de seguridad|Correo electrónico spam|Cracker|"+
"Cuenta de correo electrónico|Cuenta de usuario|Demandado|"+
"Denegación de servicio|Densidad de grabación|Desbordamiento|Descargar|"+
"Dirección de correo electrónico|Dominio|Esculpido de fichero|Ética|"+
"Excepción|Exploit|Fichero comprimido|Firma digital|Firma electrónica|"+
"Firmware|Formatear|Gusano|Hacker|Hashing|Hiperenlace|"+
"Hipertexto|Hipótesis|Honeypot|Host|HTML|HTTP|Identificador de usuario|"+
"Inodo|Insaculación|Interbloqueo|Interdicción|Juramento|Keylogger|"+
"Login|Logout|Lugar del hallazgo|Mainframe|Máscara|Mensaje|Micronúcleo|"+
"MIME|Modo privilegiado|Moral|Motor de búsqueda|Navegador|"+
"Nombre de usuario|Núcleo de un sistema operativo|Página de web|Parche|"+
"Partición|Periférico|Personalizar|Phishing|Pila|Pirata informático|"+
"Piratería informática|Pista|Pornografía ilegal|Pornografía infantil|"+
"Pornografía|Procesador|Proceso|Programa ejecutable|Programa fuente|"+
"Programa objeto|Programa|Programación|Programador|Promesa|"+
"Prueba|Prueba testifical|Puerta trasera|Puerto|RAM|Recoger|Red social|"+
"Residente|Respuesta a incidentes|ROM|Rootkit|Script|SCSI|"+
"Sector de arranque|Sector|Seguridad de la información|"+
"Seguridad del sistema|Seguridad del software|Seguridad informática|"+
"Sistema informático|Software malicioso|SQL|"+
"Tecnología de la información|Terminal|Transductor|URL|Virus|Volcado|"+
"Web crawler", "|"));
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Default terms of the glossary to avoid doubles definitions.
For internal use in this library.",
GloDef);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloFind(Text trmTxt) // Term
//////////////////////////////////////////////////////////////////////////////
{
Text trmTag = "["+trmTxt+"]: ";
Text trmFnd = TxtBetween2Tag(GloAll, "\n> "+trmTag, "\n", FALSE);
If(trmFnd != "",
{
Text trmRep = ReplaceTable(trmTag+trmFnd, [[ [["[", "<b>" ]],
[["]", "</b>"]] ]]);
Text urlTxt = TxtBetween2Tag(trmRep+"|", "| Url: ", "|", FALSE);
Case(
urlTxt=="", trmRep, // No hay Urls / no publicar urls de la wikipedia
TextFind(urlTxt,"wikipedia"), Replace(trmRep, "| Url: "+urlTxt, ""),
TRUE,
{
Set urlSet = Tokenizer(urlTxt, "*"); // Urls puede haber varias con *
Set urlSel = Select(urlSet, Real(Text url) { Compact(url)!="" });
Set urlTab = EvalSet(urlSel, Set(Text url)
{
Text urlCmp = Compact(url);
// Una mayuscula para evitar cambios en urls cuando se parecen
Text urlLnk = "<a href="+Q(FirstToUpper(urlCmp))+">"+urlCmp+"</a>";
SetOfText(urlCmp, urlLnk)
});
/* Set srtTab = Sort(urlTab, Real(Set a, Set b)
{ Compare(TextLength(b[1]),TextLength(a[1])) });
// Cambiar las Url más largas las primeras
Text WriteLn(F(srtTab));
TxtReplaceSecuence(trmRep, srtTab) // Convierte Urls en links */
TxtReplaceSecuence(trmRep, urlTab) // Convierte Urls en links
})
},
{
Text WriteLn("\nERROR "+trmTag+" not found in the glossary.\n");
""
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino el mismo termino y su definicion.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no la encuentra emitiendo un mensaje de error.",
GloFind);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real GloTest(Set trmKey) // Set of terms from keywords, lowercase all
//////////////////////////////////////////////////////////////////////////////
{
Text Write("Glossary: ");
Set cicTst = EvalSet(trmKey, Real(Text trmTxt)
{
Text trmTag = "> ["+trmTxt; // Solo el inicio
If(!TextFind(GloLow, trmTag), 0,
{ Text Write(FirstToUpper(trmTxt)+"|"); 1 })
});
Text WriteLn("\n");
SetSum(cicTst)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Prueba un conjunto de palabras clave para ver si aparecen como terminos
del glosario y visualiza las que pudieran serlo.
Retorna el numero de palabras cadidatas.",
GloTest);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloQuote(Text trmTxt) // Term
//////////////////////////////////////////////////////////////////////////////
{
Text trmDef = GloFind(trmTxt);
If(trmDef == "", "", // Not found
"<blockquote><p>"+trmDef+"</p></blockquote>")
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino el mismo termino y su definicion como un parrafo
Html de tipo blockquote.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no encuentra la definicion.",
GloQuote);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloRand(Text trmLst) // List of texts separated with |
//////////////////////////////////////////////////////////////////////////////
{
Set trmSet = Unique(Txt2Set(trmLst, "|")); // Todos los terminos
Set trmNew = trmSet - GloMem; // Los no utilizados
// Lo nuevos si quedan y si no los por defecto
Set trmUse = If(Card(trmNew), trmNew,
{
Set trmLef = GloDef - GloMem; // Los por defecto no utilizados
If(Card(trmLef), trmLef, GloDef) // Si se han usado todos -> repite
});
Text trmTxt = SetGetRand(trmUse); // Uno al azar
Set(GloMem := Copy(GloMem << SetOfText(trmTxt)));
GloQuote(trmTxt)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino, elegido al azar de entre una lista de terminos,
el mismo termino y su definicion como un parrafo Html de tipo blockquote.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no encuentra la definicion.",
GloRand);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real GloStats(Real numMin) // Escribe los terminos con >= numMin ocurrencias
//////////////////////////////////////////////////////////////////////////////
{
// Cuenta ocurrencias
Set gloCla = Classify(GloMem, Real(Text a, Text b)
{ Compare(a,b) });
// Selecciona las que tengan igual o mas de numMin ocurrencias
Set gloSel = Select(gloCla, Real(Set a)
{ GE(Card(a), numMin) });
// Ordena de mas a menos ocurrencias
Set gloSrt = Sort(gloSel, Real(Set a, Set b)
{ Compare(Card(b), Card(a)) });
// Visualiza
Text WriteLn("");
Set gloWri = EvalSet(gloSrt, Real(Set a)
{
Text WriteLn(FormatReal(Card(a), "%3.0lf")+" "+a[1]);
TRUE
});
Card(gloWri)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el numero de terminos con igual o mas numMin ocurrencias y como
efecto lateral los visualiza.",
GloStats);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FILE : glo.tol
// AUTHOR : http://www.asolver.com
// PURPOSE : glossary, vocabulary, functions.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloAll = ReadFile("../../agenda/20.glosario.all");
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Table with all the glossary, terms and their definitions.",
GloAll);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloLow = ToLower(GloAll);
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"All the glossary in lower case for test keywords.",
GloLow);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set GloMem = Copy(Empty);
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Set with the memory of all terms writed.",
GloMem);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloTop = "En vivo|Informática forense|Escenario forense digital|"+
"Perito informático|Perito judicial|Perito|Post-mortem|"+
"Cadena de custodia|Ciencia forense|Prueba digital|Prueba";
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Top terms of the glossary. Is a text for use in posts when no other terms
are defined.",
GloTop);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Set GloDef = Unique(Txt2Set(
// 2 Bibliografía sobre informática forense y pericial
"Black Hat|CSO|NCJRS|"+
// 4.2 Entidades citadas
"ACM|ANSI|cmdLabs|ECCouncil|Honeynet Project|IEEE|ISO|RedIRIS|"+
"SANS Institute|SWGDE|SWGIT|"+
// 1.1 Herramientas citadas
"Autopsy Forensic Browser|The Sleuth Kit|"+
// 5 Glosario de informática forense y pericial
"Abrir una cuenta|Acceso|Actualización|Administrador de web|"+
"Administrador|Alfanumérico|Anónimo|API|Arc|Bloqueadores de escritura|"+
"Arranque|ASCII|Autenticación|Binario|BIOS|Arquitectura del computador|"+
"Bluetooth|Bombardeo de correo electrónico|Botnet|Caballo de Troya|"+
"Caída del sistema|Ciberespacio|Ciberpunk|Cluster|CMOS|"+
"Codificación redundante|Codificación|Código corrector|Código detector|"+
"Código fuente|Compactación de memoria|Confesión judicial|Contraseña|"+
"Cookie|Copia de seguridad|Correo electrónico spam|Cracker|"+
"Cuenta de correo electrónico|Cuenta de usuario|Demandado|"+
"Denegación de servicio|Densidad de grabación|Desbordamiento|Descargar|"+
"Dirección de correo electrónico|Dominio|Esculpido de fichero|Ética|"+
"Excepción|Exploit|Fichero comprimido|Firma digital|Firma electrónica|"+
"Firmware|Formatear|Gusano|Hacker|Hashing|Hiperenlace|"+
"Hipertexto|Hipótesis|Honeypot|Host|HTML|HTTP|Identificador de usuario|"+
"Inodo|Insaculación|Interbloqueo|Interdicción|Juramento|Keylogger|"+
"Login|Logout|Lugar del hallazgo|Mainframe|Máscara|Mensaje|Micronúcleo|"+
"MIME|Modo privilegiado|Moral|Motor de búsqueda|Navegador|"+
"Nombre de usuario|Núcleo de un sistema operativo|Página de web|Parche|"+
"Partición|Periférico|Personalizar|Phishing|Pila|Pirata informático|"+
"Piratería informática|Pista|Pornografía ilegal|Pornografía infantil|"+
"Pornografía|Procesador|Proceso|Programa ejecutable|Programa fuente|"+
"Programa objeto|Programa|Programación|Programador|Promesa|"+
"Prueba|Prueba testifical|Puerta trasera|Puerto|RAM|Recoger|Red social|"+
"Residente|Respuesta a incidentes|ROM|Rootkit|Script|SCSI|"+
"Sector de arranque|Sector|Seguridad de la información|"+
"Seguridad del sistema|Seguridad del software|Seguridad informática|"+
"Sistema informático|Software malicioso|SQL|"+
"Tecnología de la información|Terminal|Transductor|URL|Virus|Volcado|"+
"Web crawler", "|"));
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Default terms of the glossary to avoid doubles definitions.
For internal use in this library.",
GloDef);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloFind(Text trmTxt) // Term
//////////////////////////////////////////////////////////////////////////////
{
Text trmTag = "["+trmTxt+"]: ";
Text trmFnd = TxtBetween2Tag(GloAll, "\n> "+trmTag, "\n", FALSE);
If(trmFnd != "",
{
Text trmRep = ReplaceTable(trmTag+trmFnd, [[ [["[", "<b>" ]],
[["]", "</b>"]] ]]);
Text urlTxt = TxtBetween2Tag(trmRep+"|", "| Url: ", "|", FALSE);
Case(
urlTxt=="", trmRep, // No hay Urls / no publicar urls de la wikipedia
TextFind(urlTxt,"wikipedia"), Replace(trmRep, "| Url: "+urlTxt, ""),
TRUE,
{
Set urlSet = Tokenizer(urlTxt, "*"); // Urls puede haber varias con *
Set urlSel = Select(urlSet, Real(Text url) { Compact(url)!="" });
Set urlTab = EvalSet(urlSel, Set(Text url)
{
Text urlCmp = Compact(url);
// Una mayuscula para evitar cambios en urls cuando se parecen
Text urlLnk = "<a href="+Q(FirstToUpper(urlCmp))+">"+urlCmp+"</a>";
SetOfText(urlCmp, urlLnk)
});
/* Set srtTab = Sort(urlTab, Real(Set a, Set b)
{ Compare(TextLength(b[1]),TextLength(a[1])) });
// Cambiar las Url más largas las primeras
Text WriteLn(F(srtTab));
TxtReplaceSecuence(trmRep, srtTab) // Convierte Urls en links */
TxtReplaceSecuence(trmRep, urlTab) // Convierte Urls en links
})
},
{
Text WriteLn("\nERROR "+trmTag+" not found in the glossary.\n");
""
})
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino el mismo termino y su definicion.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no la encuentra emitiendo un mensaje de error.",
GloFind);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real GloTest(Set trmKey) // Set of terms from keywords, lowercase all
//////////////////////////////////////////////////////////////////////////////
{
Text Write("Glossary: ");
Set cicTst = EvalSet(trmKey, Real(Text trmTxt)
{
Text trmTag = "> ["+trmTxt; // Solo el inicio
If(!TextFind(GloLow, trmTag), 0,
{ Text Write(FirstToUpper(trmTxt)+"|"); 1 })
});
Text WriteLn("\n");
SetSum(cicTst)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Prueba un conjunto de palabras clave para ver si aparecen como terminos
del glosario y visualiza las que pudieran serlo.
Retorna el numero de palabras cadidatas.",
GloTest);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloQuote(Text trmTxt) // Term
//////////////////////////////////////////////////////////////////////////////
{
Text trmDef = GloFind(trmTxt);
If(trmDef == "", "", // Not found
"<blockquote><p>"+trmDef+"</p></blockquote>")
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino el mismo termino y su definicion como un parrafo
Html de tipo blockquote.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no encuentra la definicion.",
GloQuote);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Text GloRand(Text trmLst) // List of texts separated with |
//////////////////////////////////////////////////////////////////////////////
{
Set trmSet = Unique(Txt2Set(trmLst, "|")); // Todos los terminos
Set trmNew = trmSet - GloMem; // Los no utilizados
// Lo nuevos si quedan y si no los por defecto
Set trmUse = If(Card(trmNew), trmNew,
{
Set trmLef = GloDef - GloMem; // Los por defecto no utilizados
If(Card(trmLef), trmLef, GloDef) // Si se han usado todos -> repite
});
Text trmTxt = SetGetRand(trmUse); // Uno al azar
Set(GloMem := Copy(GloMem << SetOfText(trmTxt)));
GloQuote(trmTxt)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna para un termino, elegido al azar de entre una lista de terminos,
el mismo termino y su definicion como un parrafo Html de tipo blockquote.
La busqueda la realiza de forma exacta con sus mayusculas y minusculas.
Retorna la tira vacia si no encuentra la definicion.",
GloRand);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real GloStats(Real numMin) // Escribe los terminos con >= numMin ocurrencias
//////////////////////////////////////////////////////////////////////////////
{
// Cuenta ocurrencias
Set gloCla = Classify(GloMem, Real(Text a, Text b)
{ Compare(a,b) });
// Selecciona las que tengan igual o mas de numMin ocurrencias
Set gloSel = Select(gloCla, Real(Set a)
{ GE(Card(a), numMin) });
// Ordena de mas a menos ocurrencias
Set gloSrt = Sort(gloSel, Real(Set a, Set b)
{ Compare(Card(b), Card(a)) });
// Visualiza
Text WriteLn("");
Set gloWri = EvalSet(gloSrt, Real(Set a)
{
Text WriteLn(FormatReal(Card(a), "%3.0lf")+" "+a[1]);
TRUE
});
Card(gloWri)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el numero de terminos con igual o mas numMin ocurrencias y como
efecto lateral los visualiza.",
GloStats);
//////////////////////////////////////////////////////////////////////////////
iForense construye las paginas del sitio sobre informática forense Forense.Info
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio