www.wikidata.de-de.nina.az
ANSI Escapesequenzen oder ANSI Escapecodes sind Zeichenfolgen zur Bildschirmsteuerung Escapesequenzen die das ASCII ANSI Zeichen 27 1B hexadezimal Escape als einleitendes Steuerzeichen nutzten und auf dem Standard von ANSI X3 64 und ECMA 48 beruhen Diese ANSI ECMA Norm definiert einen Standard zur Bildschirm und Tastatursteuerung auf Terminals wie der DEC VT100 1979 Ausser auf Terminals selbst sind ANSI Escapesequenzen in entsprechenden Terminalemulationen und in Kommandozeileninterpretern implementiert Die 2 Ausgabe von ECMA 48 wurde 1978 als ISO 6429 und mit der 4 Ausgabe 1986 als ISO IEC 6429 standardisiert Der aktuelle ECMA 48 Standard entspricht der 5 Ausgabe vom Juni 1991 Inhaltsverzeichnis 1 Geschichte 1 1 Standards 2 ANSI Steuerzeichen und Steuersequenzen 2 1 Escapesequenzen 2 2 ANSI Steuerzeichen 2 3 Zeichensatze 3 Steuerzeichen 4 Steuersequenzen 4 1 Single Character Introducer 4 2 Control Sequence Intro 5 Sicherheit 6 Implementierungen 7 Weblinks 8 EinzelnachweiseGeschichte BearbeitenIn den 1970er Jahren wurde der ASCII Standard der bereits 1968 festgelegt worden war durch das American National Standards Institute ANSI uberarbeitet Dieser als ANSI X3 4 1977 bezeichnete Standard definiert jedoch nur die ersten 7 Bit wurde als die ASCII Zeichentabelle bekannt und bildet die Grundlage fur weitere internationale Zeichensatze Die ersten Arbeiten zur Standardisierung eines 8 Bit Zeichensatzes resultierten bereits 1971 in ANSI X3 41 und ECMA 35 Gemeinsam mit der European Computer Manufacturers Association ECMA wurde in den Komitees mit den Bezeichnungen X3L2 bei ANSI und TC 1 bei ECMA an der Erweiterung der 8 Bit Eingabe und Ausgabesteuerung gearbeitet was u a die Moglichkeiten der Videoausgabe auf Terminals erweitern und gleichzeitig standardisieren sollte Das Ergebnis dieser Arbeit ist ECMA 48 vom September 1976 sowie ANSI X3 64 von 1977 Diese Spezifikation wurde auch dem ISO Komitee vorgelegt und 1978 als ISO 6429 akzeptiert Die 2 Ausgabe von ANSI X3 64 und ECMA 48 von 1979 ist identisch mit der ISO Norm Die ersten Terminals die ANSI X3 64 1977 umsetzten waren der DEC VT100 Terminal von 1978 und der Heathkit H89 von 1979 Standards Bearbeiten Der Standard wurde mit minimalen Abweichungen sowohl von ANSI als auch ECMA herausgegeben und nach Einreichung auch zur ISO und IEC Norm Allerdings sind nur die ECMA Standards frei zuganglich gratis Der ANSI Standard wurde zugunsten der ISO Norm zuruckgezogen um Doppelstandardisierung zu vermeiden Jahr Bezeichnung ANSI ECMA ISO IEC1965 7 bit Coded Character Set USAS 1 X3 4 ECMA 6 2 ISO IEC 6461971 Character Code Structure and Extension Techniques ANSI X3 41 ECMA 35 3 ISO IEC 20221974 8 bit Coded Character Set Structure and Rules ECMA 43 4 ISO IEC 48731979 Control Functions for Coded Character Sets ANSI X3 64 ECMA 48 5 ISO IEC 6429Die Standards sind aufbauend und miteinander verwoben wurde einer der Standards angepasst so wurde meist auch eine angepasste Version der anderen Standards veroffentlicht Leider gibt es dennoch in unterschiedlichen Implementierungen und Dokumenten sogar Standards und Normen zueinander inkompatible Steuerzeichen und sequenzen 6 ANSI Steuerzeichen und Steuersequenzen BearbeitenDer ASCII Standard nach ECMA 6 ANSI X3 4 definiert C0 Steuerzeichen im Bereich 0 31 dezimal bzw 00 1F hexadezimal und ist auf 7 Bits begrenzt Die Erweiterung auf 8 Bit nach ECMA 43 beinhalten die als C1 bezeichneten Steuerzeichen im Bereich von 128 159 dezimal bzw 80 9F hexadezimal fur die Bildschirm und Druckersteuerung Weil jedoch der Platz fur Steuerzeichen begrenzt war wurden zusatzliche Befehle und Funktionen uber Steuersequenzen implementiert 7 Wahrend ein Steuerzeichen eine Funktion direkt umsetzt sind bei einer Steuersequenz mehrere Zeichen notwendig Die Anzahl der Zeichen ist je nach Funktion unterschiedlich Die primaren Steuerzeichen liegen im C1 Bereich und sind daher nur auf Systemen mit 8 Bit Zeichensatzen verfugbar Sie sind nach ANSI X3 64 bzw ECMA 48 standardisiert und beinhalten Cursor Befehle Bildschirm Befehle Losch Attribut Modus Befehle und Tastatur Befehle 8 Escapesequenzen Bearbeiten Damit aber auch 7 Bit Systeme von den erweiterten ANSI Steuerzeichen und Steuersequenzen profitieren konnen wurden sogenannte Escapesequenzen eingefuhrt Es gibt von den meisten Steuerzeichen im C1 Bereich ein Aquivalent dazu uber eine Escapesequenz die somit auch auf Systemen mit 7 Bit Zeichensatz dem ASCII Zeichensatz verfugbar sind Diese wurden als ANSI Escapesequenzen englisch ANSI escape sequences manchmal auch ANSI escape codes bekannt 7 ANSI Steuerzeichen Bearbeiten Hauptartikel C1 im Artikel Steuerzeichen Dies ist ein Auszug von C1 Steuerzeichen aus dem 8 Bit ANSI Zeichensatz die mittels Escapesequenzen C0 Steuerzeichen an ASCII Position 27 im 7 Bit ASCII Zeichensatz zuganglich sind 7 Bit Aquivalent C0 zu den erweiterten 8 Bit Steuerzeichen C1 Steuerbefehl C1 Position C0 PositionenZeichenname ISO IETF Hex Dez Okt Escapesequenz Hex Dez OktPadding Character PAD PA 80 128 200 ESC 1B 40 027 064 33 100High Octet Preset HOP HO 81 129 201 ESC A 1B 41 027 065 33 101Break Permitted Here BPH BH 82 130 202 ESC B 1B 42 027 066 33 102No Break Here NBH NH 83 131 203 ESC C 1B 43 027 067 33 103Index IND IN 84 132 204 ESC D 1B 44 027 068 33 104Next Line NEL NL 85 133 205 ESC E 1B 45 027 069 33 105Start of Selected Area SSA SA 86 134 206 ESC F 1B 46 027 070 33 106End of Selected Area ESA ES 87 135 207 ESC G 1B 47 027 071 33 107Character Tabulation Set HTS HS 88 136 210 ESC H 1B 48 027 072 33 110Character Tabulation with Justification HTJ HJ 89 137 211 ESC I 1B 49 027 073 33 111Line Tabulation Set VTS VS 8A 138 212 ESC J 1B 4A 027 074 33 112Partial Line Forward PLD PD 8B 139 213 ESC K 1B 4B 027 075 33 113Partial Line Backward PLU PU 8C 140 214 ESC L 1B 4C 027 076 33 114Reverse Line Feed RI RI 8D 141 215 ESC M 1B 4D 027 077 33 115Single Shift 2 SS2 S2 8E 142 216 ESC N 1B 4E 027 078 33 116Single Shift 3 SS3 S3 8F 143 217 ESC O 1B 4F 027 079 33 117Device Control String DCS DC 90 144 220 ESC P 1B 50 027 080 33 120Private Use One PU1 P1 91 145 221 ESC Q 1B 51 027 081 33 121Private Use Two PU2 P2 92 146 222 ESC R 1B 52 027 082 33 122Set Transmit State STS TS 93 147 223 ESC S 1B 53 027 083 33 123Cancel Character CCH CC 94 148 224 ESC T 1B 54 027 084 33 124Message Waiting MW MW 95 149 225 ESC U 1B 55 027 085 33 125Start Protected Area SPA SG 96 150 226 ESC V 1B 56 027 086 33 126End Protected Area EPA EG 97 151 227 ESC W 1B 57 027 087 33 127Start Of String SOS SS 98 152 230 ESC X 1B 58 027 088 33 130Single Graphic Character Introducer SGCI GC 99 153 231 ESC Y 1B 59 027 089 33 131Single Character Introducer SCI SC 9A 154 232 ESC Z 1B 5A 027 090 33 132ROI 9A 154 232 ESC 1B 25 027 037 33 45Control Sequence Intro CSI CI 9B 155 233 ESC 1B 5B 027 091 33 133String Terminator ST SI 9C 156 234 ESC 1B 5C 027 092 33 134Operating System Command OSC OC 9D 157 235 ESC 1B 5D 027 093 33 135Privacy Message PM PM 9E 158 236 ESC 1B 5E 027 094 33 136Application Program Command APC AC 9F 159 237 ESC 1B 5F 027 095 33 137Zur Berechnung der Escapesequenz wird vom C1 Steuerzeichen 40h 64 dezimal oder 100 oktal abgezogen So hat beispielsweise das Steuerzeichen PAD die C1 Position 80h zieht man 40h davon ab erhalt man die Escapesequenz ESC weil das Zeichen die C0 Position 40h hat also 80h 40h 40h Ebenso verhalt es sich bei in dezimal ausgedruckten Zeichenpositionen 128 64 64 entspricht 40h sowie oktal 200 100 100 entspricht 40h Der einzige Nachteil der Escapesequenz ist dass ein zusatzliches Zeichen pro Steuerbefehl verarbeitet werden muss was auf langsamen Terminals zu Geschwindigkeitseinbussen fuhren konnte zumindest theoretisch und wenn ein ANSI Script sehr lang war Nach der Spezifikation konnen alle 8 Bit fahigen Gerate auch die 7 Bit Escapefunktion nutzen sodass sich die Escapesequenzen durchgesetzt haben Zeichensatze Bearbeiten Hauptartikel Zeichensatz und Unicode In den meisten Zeichensatzen sind die C0 und C1 Steuerzeichen an den normierten Positionen enthalten Ausser auf emulierten VT100 Terminals finden jedoch fast nur C0 Steuerzeichen Verwendung 9 Bei der Entwicklung von Unicode wurden diese ebenfalls ubernommen sodass in Unicode die Steuerzeichen gem ANSI X3 64 und ECMA 48 innerhalb der ersten 256 Positionen abgebildet sind ANSI Escapesequenzen sind bei Unicode zwar ohne Funktion jedoch wurden einige der Funktionen an anderer Unicode Position ahnlich umgesetzt z B ein geschutztes Leerzeichen Steuerzeichen BearbeitenDie uber eine Escapesequenz aufgerufene Funktion eines C1 Steuerzeichens hat gemass Spezifikation genau die gleiche Funktion wie das einzelne Steuerzeichen Als Escapesequenz bleiben Steuerzeichen innerhalb des 7 Bit C0 Bereichs von ASCII und sind somit mit Systemen die nur 7 Bit unterstutzen oder in diesen Modus geschaltet wurden kompatibel Steuersequenzen BearbeitenEine Steuersequenz wird immer durch ein Steuerzeichen eingeleitet und besteht mindestens aus zwei Zeichen Bei variabler Grosse wird die Steuersequenz durch ein definiertes abschliessendes Zeichen oder durch ein Trennzeichen abgeschlossen Eine Steuersequenz wird wie ein einzelnes Steuerzeichen behandelt mit dem Unterschied dass die gesamte Steuersequenz gelesen werden muss bevor deren Umsetzung erfolgen kann Im Wesentlichen gibt es drei Steuerzeichen die eine Steuersequenz einleiten ESC Escape SCI Single Character Introducer bzw ROI auf VT100 Terminals CSI Control Sequence IntroNur das Steuerzeichen ESC liegt im ASCII Bereich und ist daher ein 7 Bit kompatibles C0 Steuerzeichen Die beiden C1 Steuerzeichen SCI bzw ROI und CSI konnen uber eine Escapesequenz substituiert werden womit die Steuersequenz dann ASCII kompatibel auf 7 Bit beschrankt bleibt Die Steuerzeichen APC DCS OSC PM und SOS leiten ebenfalls eine Steuersequenz ein und mussen mit dem Trennzeichen ST abgeschlossen werden Single Character Introducer Bearbeiten Das Steuerzeichen Single Character Introducer SCI leitet eine Steuersequenz mit nur einem einzigen zusatzlichen Zeichen ein und benotigt daher auch kein Trennzeichen Da jedoch die Funktionen dieses Steuerzeichens nicht standardisiert wurden bedeuten sie auf jedem System etwas anderes lt ESC gt Z lt Funktion gt Die jeweilige proprietare Funktion wird mit der Escapesequenz ESC Z eingeleitet gefolgt von einer definierten Funktion Da der ECMA ANSI Standard keine standardisierten Funktionen festlegt kann jede Implementierung eigene proprietare Funktionen festlegen Auf DECs VT100 wird dasselbe C1 Steuerzeichen 154 bzw 9Ahex fur das proprietare Steuerzeichen ROI verwendet das jedoch mit einer anderen Escapesequenz eingeleitet wird ESC Anders als CSI ist ROI jedoch von variabler Lange Viele Terminalemulationen bieten einen VT100 kompatiblen Modus Beispiel lt ESC gt 0K Die Steuersequenz ROI 0 K schaltet die Tastatur aus Mit ROI 1 K wird sie wieder eingeschaltet lt ESC gt 1I Mit der Steuersequenz ROI 1 I kann die aktuelle IP Adresse abgefragt werden Die Ruckgabe hat das Format ROI lt IP Adresse gt I Control Sequence Intro Bearbeiten Das Steuerzeichen Control Sequence Intro CSI ist das meist genutzte Steuerzeichen da es eine Vielzahl weiterer Funktionen bietet die sonst nicht mehr in den verfugbaren Rahmen von nur 8 Bit gepasst hatten Es wird mit dem Zeichen 9Bhex im 8 Bit Modus meist jedoch als Escapesequenz ESC im 7 Bit Modus also 1Bhex 5Bhex eingeleitet Eine CSI Steuersequenz setzt sich immer aus einem einleitenden Steuerzeichen oder der entsprechenden Escapesequenz einem Parameterteil und einem abschliessenden Zeichen zusammen wobei letzteres die Funktion bestimmt Im Parameterteil wird der Strichpunkt als Trennzeichen genutzt Der Parameterteil ist optional bzw es gibt meist einen Standardparameter wenn dieser fehlt lt ESC gt 0 1 4 m Steuerzeichen abschliessendes Zeichen Parameterteil In diesem Beispiel ist ESC das einleitende Steuerzeichen CSI als Escapesequenz gefolgt von den Parametern 0 1 4 abgeschlossen durch das Zeichen m das die eigentliche Funktion bestimmt Wird der Parameterteil weggelassen so sieht die Steuersequenz so aus lt ESC gt m Diese Steuersequenz ist gleichbedeutend mit ESC 0 m da 0 der Standardparameter ist Sicherheit BearbeitenDa die Steuerzeichen auch dazu verwendet werden konnen Tastatureingaben zu simulieren und umzudefinieren kann eine Datei mit ANSI Escapesequenzen auf einem Computer auch Schaden anrichten Dabei ist es lediglich notig die Datei von einem voll ANSI fahigen Programm anzeigen zu lassen welches dann die enthaltenen Escapesequenzen ungefiltert ausfuhrt Diese Art der Schadfunktion wird auch als ANSI Bombe bezeichnet 10 11 Zu Zeiten von MS DOS konnte sogar mit einer manipulierten Laufwerksbezeichnung eine ANSI Bombe realisiert werden sodass ein dir a ausreichte wenn ANSI SYS geladen war 10 Aber auch moderne Terminals sind noch anfallig fur Terminal Escape Injection 12 Implementierungen BearbeitenHardware DEC VT100 und dessen Nachfolgemodelle VT102 VT220 VT320 VT420 VT520 Heathkit H89 und Terminal Varianten H19 auch als Zenith Z19 Software ANSI SYS aus den IBM PC kompatiblen DOS Betriebssystemen wie u a PC DOS MS DOS DR DOS 13 BBS Clients wie Kermit oder Qmodem xterm 14 ANSI SYS Alternativen fur DOS ANSI COM NANSI SYS NNANSI COM OS 2 Kommandozeile 15 Amiga console device Eingabeaufforderung seit Windows 10 1511 16 Node js Bibliothek ANSIS fur die Textgestaltung in ANSI TerminalsWeblinks BearbeitenECMA 48 Control Functions for Coded Character Sets in der aktuellen 5 Ausgabe vom Juni 1991 englisch Edward Moy Stephen Gildea Thomas Dickey rtfm Xterm Escape Sequences XFree86 1999 englisch eine gute Referenz fur ANSI Escapesequenzen in xterm ANSI Escape sequences ANSI Escape codes auf ascii table com englisch Einzelnachweise Bearbeiten ANSI Historical Overview englisch abgerufen am 27 Marz 2016 Das American National Standards Institute ANSI hiess vor 1969 United States of America Standards Institute USASI ECMA 6 englisch ECMA 35 englisch ECMA 43 englisch ECMA 48 englisch ISO International Register of Coded Character Sets To Be Used With Escape Sequences englisch PDF 153 kB abgerufen am 28 Marz 2016 a b Aivosto Control characters in ASCII and Unicode englisch Abschnitt History of C1 Zitat The standards actually cover more control codes than those that fit in the C1 area These additional controls are used via control sequences escape sequences the sequences are an important part of the standards that should be used together with the C1 controls The sequences together with C1 are also known as VT100 and ANSI escape sequences Programming ANSI SYS Escape Sequences englisch abgerufen am 26 Marz 2016 Aivosto Resources for developers Control characters in Unicode englisch abgerufen am 28 Marz 2016 a b Howard Fuhs Computerviren und ihre Vermeidung Ein ubersichtlicher praxisorientierter Leitfaden fur jeden PC Anwender Springer Verlag 2013 ISBN 978 3 322 84213 8 S 50 Volltext in der Google Buchsuche Viel Farbenpracht mit Ansi Bomben Memento des Originals vom 26 Marz 2016 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www pcwelt de PC Welt abgerufen am 26 Marz 2016 Terminal Escape Injection Blog InfosecMatter 16 April 2020 abgerufen am 16 Oktober 2020 englisch ANSI SYS MSDN abgerufen am 26 Marz 2016 englisch manpage console codes englisch Ask Felgall Computer Help OS 2 Command Reference englisch abgerufen am 5 April 2016 Nivot Ink Blog Windows 10 TH2 v1511 Console Host Enhancements englisch Oisin Grehan 4 Februar 2016 abgerufen am 26 Marz 2016 Abgerufen von https de wikipedia org w index php title ANSI Escapesequenz amp oldid 239262115 ANSI Bombe