wireshark/ui/qt/import_text_dialog.ui
John Thacker f85f077b54 text_import: Allow fake IP headers with Raw IP encapsulation
In text2pcap and Import from Hex Dump, allow fake IP headers with
the appropriate versions when the Raw IP, Raw IPv4, and Raw IPv6
encapsulations are specified. In such cases, do not add a dummy
Ethernet header.

Continue to reject other encapsulations besides these, Ethernet,
and Wireshark Upper PDU when appropriate. Add some checks for the
encapsulation type in text_import as well, instead of just assuming
that the callers handle it correctly.
2022-01-11 08:46:44 -05:00

869 lines
29 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ImportTextDialog</class>
<widget class="QDialog" name="ImportTextDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<height>832</height>
</rect>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>1000</height>
</size>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<property name="modal">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>File:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="textFileLineEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Set name of text file to import</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="textFileBrowseButton">
<property name="toolTip">
<string>Browse for text file to import</string>
</property>
<property name="text">
<string>Browse…</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTabWidget" name="modeTabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Hex Dump</string>
</attribute>
<attribute name="toolTip">
<string>Import a standard hex dump as exported by Wireshark</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<property name="verticalSpacing">
<number>1</number>
</property>
<item row="2" column="1">
<widget class="QRadioButton" name="octalOffsetButton">
<property name="toolTip">
<string>Offsets in the text file are in octal notation</string>
</property>
<property name="text">
<string>Octal</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Offsets:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="hexOffsetButton">
<property name="toolTip">
<string>Offsets in the text file are in hexadecimal notation</string>
</property>
<property name="text">
<string>Hexadecimal</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="decimalOffsetButton">
<property name="toolTip">
<string>Offsets in the text file are in decimal notation</string>
</property>
<property name="text">
<string>Decimal</string>
</property>
</widget>
</item>
<item row="0" column="2" rowspan="4">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="noOffsetButton">
<property name="toolTip">
<string>The text file has no offset</string>
</property>
<property name="text">
<string>None</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="noOffsetLabel">
<property name="font">
<font>
<italic>false</italic>
</font>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5" stretch="0,0,0">
<item>
<widget class="QLabel" name="directionIndicationLabel">
<property name="toolTip">
<string>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</string>
</property>
<property name="text">
<string>Direction indication:</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="directionIndicationCheckBox">
<property name="toolTip">
<string>Whether or not the file contains information indicating the direction (inbound or outbound) of the packet.</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="asciiLayout" stretch="0,0,0">
<item>
<widget class="QLabel" name="asciiIdentificationLabel">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Whether to do extra processing detecting the start of the ASCII representation at the end of a hex+ASCII line even if it looks like hex bytes.&lt;/p&gt;&lt;p&gt;Do not enable if the hex dump does not contain ASCII.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>ASCII identification:</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="asciiIdentificationCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Whether to do extra processing detecting the start of the ASCII representation at the end of a hex+ASCII line even if it looks like hex bytes.&lt;/p&gt;&lt;p&gt;Do not enable if the hex dump does not contain ASCII.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<spacer name="asciiSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Regular Expression</string>
</attribute>
<attribute name="toolTip">
<string>Import a file formatted according to a custom regular expression</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Packet format regular expression</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="regexTextEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>1</width>
<height>1</height>
</size>
</property>
<property name="baseSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Perl compatible regular expression capturing a single packet in the file with named groups identifieing data to import. Anchors ^ and $ also match before/after newlines &lt;/p&gt;&lt;p&gt;Required is only a data group, also supported are time, dir and seqno.&lt;/p&gt;&lt;p&gt;Regex flags: DUPNAMES, MULTILINE and NOEMPTY&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="lineWidth">
<number>24</number>
</property>
<property name="acceptRichText">
<bool>false</bool>
</property>
<property name="placeholderText">
<string notr="true">^(?&lt;dir&gt;(&lt;|&gt;))\s*(?&lt;time&gt;(\d\d\:){2}\d\d)\s+(?&lt;seqno&gt;\d{5})\s+(?&lt;data&gt;[0-9a-fA-F]*)$\s+</string>
</property>
</widget>
</item>
<item>
<widget class="ElidedLabel" name="regexHintLabel">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>This is regexHintLabel, it will be set to default_regex_hint</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8" stretch="0,0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Data encoding:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="dataEncodingComboBox">
<property name="toolTip">
<string>How data is encoded</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>&lt;small&gt;&lt;i&gt;recommended regex:&lt;/small&gt;&lt;/i&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="encodingRegexExample">
<property name="text">
<string>encodingRegexExample</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,0,0,0">
<item>
<widget class="QLabel" name="dirIndicationLabel">
<property name="toolTip">
<string/>
</property>
<property name="text">
<string>Direction indication:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="dirInIndicationLineEdit">
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>List of characters indicating incoming packets</string>
</property>
<property name="maxLength">
<number>6</number>
</property>
<property name="placeholderText">
<string>iI&lt;</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="dirOutIndicationLineEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="toolTip">
<string>List of characters indicating outgoing packets</string>
</property>
<property name="placeholderText">
<string>oO&gt;</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_9" stretch="0,0,0,0">
<item>
<widget class="QLabel" name="timestampLabel">
<property name="toolTip">
<string>The format in which to parse timestamps in the text file (e.g. %H:%M:%S.). Format specifiers are based on strptime(3)</string>
</property>
<property name="text">
<string>Timestamp format:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="timestampFormatLineEdit">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The format in which to parse timestamps in the text file (e.g. %H:%M:%S.%f).&lt;/p&gt;&lt;p&gt;Format specifiers are based on strptime(3) with the addition of %f for second fractions. The precision of %f is determined from its length.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="placeholderText">
<string>%H:%M:%S.%f</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="timestampExampleLabel">
<property name="text">
<string>timestampExampleLabel</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Encapsulation</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::FieldsStayAtSizeHint</enum>
</property>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Encapsulation Type:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="encapComboBox">
<property name="toolTip">
<string>Encapsulation type of the frames in the import capture file</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<layout class="QGridLayout" name="headerGridLayout">
<property name="verticalSpacing">
<number>1</number>
</property>
<item row="0" column="0" colspan="3">
<widget class="QRadioButton" name="noDummyButton">
<property name="toolTip">
<string>Leave frames unchanged</string>
</property>
<property name="text">
<string>No dummy header</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="3" rowspan="8">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="ethernetButton">
<property name="toolTip">
<string>Prefix each frame with an Ethernet header</string>
</property>
<property name="text">
<string>Ethernet</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="ipv4Button">
<property name="toolTip">
<string>Prefix each frame with an Ethernet and IP header</string>
</property>
<property name="text">
<string>IP</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QRadioButton" name="udpButton">
<property name="toolTip">
<string>Prefix each frame with an Ethernet, IP and UDP header</string>
</property>
<property name="text">
<string>UDP</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QRadioButton" name="tcpButton">
<property name="toolTip">
<string>Prefix each frame with an Ethernet, IP and TCP header</string>
</property>
<property name="text">
<string>TCP</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QRadioButton" name="sctpButton">
<property name="toolTip">
<string>Prefix each frame with an Ethernet, IP and SCTP header</string>
</property>
<property name="text">
<string>SCTP</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QRadioButton" name="sctpDataButton">
<property name="toolTip">
<string>Prefix each frame with an Ethernet, IP and SCTP (DATA) header</string>
</property>
<property name="text">
<string>SCTP (Data)</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QRadioButton" name="exportPduButton">
<property name="text">
<string>ExportPDU</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="ethertypeLabel">
<property name="text">
<string>Ethertype (hex):</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="protocolLabel">
<property name="text">
<string>Protocol (dec):</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="sourceAddressLabel">
<property name="text">
<string>Source address:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="destinationAddressLabel">
<property name="text">
<string>Destination address:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="sourcePortLabel">
<property name="text">
<string>Source port:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="destinationPortLabel">
<property name="text">
<string>Destination port:</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="tagLabel">
<property name="text">
<string>Tag:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="ppiLabel">
<property name="text">
<string>PPI:</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLabel" name="payloadLabel">
<property name="text">
<string>Dissector</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="SyntaxLineEdit" name="ethertypeLineEdit">
<property name="toolTip">
<string>The Ethertype value of each frame</string>
</property>
<property name="cursorPosition">
<number>0</number>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="SyntaxLineEdit" name="protocolLineEdit">
<property name="toolTip">
<string>The IP protocol ID for each frame</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="3">
<widget class="SyntaxLineEdit" name="sourceAddressLineEdit">
<property name="toolTip">
<string>The IP source address for each frame</string>
</property>
</widget>
</item>
<item row="4" column="2" colspan="3">
<widget class="SyntaxLineEdit" name="destinationAddressLineEdit">
<property name="toolTip">
<string>The IP destination address for each frame</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="SyntaxLineEdit" name="sourcePortLineEdit">
<property name="toolTip">
<string>The UDP, TCP or SCTP source port for each frame</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="SyntaxLineEdit" name="destinationPortLineEdit">
<property name="toolTip">
<string>The UDP, TCP or SCTP destination port for each frame</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="SyntaxLineEdit" name="tagLineEdit">
<property name="toolTip">
<string>The SCTP verification tag for each frame</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="SyntaxLineEdit" name="ppiLineEdit">
<property name="toolTip">
<string>The SCTP DATA payload protocol identifier for each frame</string>
</property>
</widget>
</item>
<item row="9" column="2" colspan="3">
<widget class="QComboBox" name="dissectorComboBox">
<property name="toolTip">
<string>The dissector to use for each frame</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLabel" name="ipVersionLabel">
<property name="text">
<string>IP version:</string>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QComboBox" name="ipVersionComboBox">
<property name="toolTip">
<string>The IP Version to use for the dummy IP header</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="interfaceLayout">
<item>
<widget class="QLabel" name="interfaceLabel">
<property name="text">
<string>Interface name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="interfaceLineEdit">
<property name="toolTip">
<string>The name of the interface to write to the import capture file</string>
</property>
<property name="placeholderText">
<string>Fake IF, Import from Hex Dump</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="maxLengthLayout">
<item>
<widget class="QLabel" name="maxLengthLabel">
<property name="text">
<string>Maximum frame length:</string>
</property>
</widget>
</item>
<item>
<widget class="SyntaxLineEdit" name="maxLengthLineEdit">
<property name="toolTip">
<string>The maximum size of the frames to write to the import capture file (max 256kiB)</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Open</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ElidedLabel</class>
<extends>QLabel</extends>
<header>widgets/elided_label.h</header>
</customwidget>
<customwidget>
<class>SyntaxLineEdit</class>
<extends>QLineEdit</extends>
<header>widgets/syntax_line_edit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>ImportTextDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>ImportTextDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>