recog 2.3.22 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +2 -0
  3. data/LICENSE +1 -1
  4. data/README.md +25 -16
  5. data/Rakefile +2 -9
  6. data/lib/recog/db_manager.rb +1 -1
  7. data/lib/recog/fingerprint.rb +21 -7
  8. data/lib/recog/fingerprint_parse_error.rb +10 -0
  9. data/lib/recog/match_reporter.rb +37 -3
  10. data/lib/recog/matcher.rb +5 -10
  11. data/lib/recog/verifier.rb +4 -4
  12. data/lib/recog/verify_reporter.rb +7 -6
  13. data/lib/recog/version.rb +1 -1
  14. data/{bin → recog/bin}/recog_match +20 -7
  15. data/{xml → recog/xml}/apache_modules.xml +0 -0
  16. data/{xml → recog/xml}/apache_os.xml +61 -19
  17. data/{xml → recog/xml}/architecture.xml +15 -1
  18. data/{xml → recog/xml}/dhcp_vendor_class.xml +10 -10
  19. data/{xml → recog/xml}/dns_versionbind.xml +16 -13
  20. data/{xml → recog/xml}/favicons.xml +167 -9
  21. data/{xml → recog/xml}/fingerprints.xsd +9 -1
  22. data/{xml → recog/xml}/ftp_banners.xml +131 -141
  23. data/{xml → recog/xml}/h323_callresp.xml +2 -2
  24. data/{xml → recog/xml}/hp_pjl_id.xml +81 -81
  25. data/{xml → recog/xml}/html_title.xml +250 -9
  26. data/{xml → recog/xml}/http_cookies.xml +111 -34
  27. data/{xml → recog/xml}/http_servers.xml +483 -270
  28. data/{xml → recog/xml}/http_wwwauth.xml +83 -37
  29. data/{xml → recog/xml}/imap_banners.xml +10 -10
  30. data/{xml → recog/xml}/ldap_searchresult.xml +0 -0
  31. data/{xml → recog/xml}/mdns_device-info_txt.xml +0 -0
  32. data/{xml → recog/xml}/mdns_workstation_txt.xml +0 -0
  33. data/{xml → recog/xml}/mysql_banners.xml +0 -0
  34. data/{xml → recog/xml}/mysql_error.xml +0 -0
  35. data/{xml → recog/xml}/nntp_banners.xml +8 -5
  36. data/{xml → recog/xml}/ntp_banners.xml +33 -33
  37. data/{xml → recog/xml}/operating_system.xml +92 -77
  38. data/{xml → recog/xml}/pop_banners.xml +25 -25
  39. data/{xml → recog/xml}/rsh_resp.xml +0 -0
  40. data/{xml → recog/xml}/rtsp_servers.xml +0 -0
  41. data/{xml → recog/xml}/sip_banners.xml +16 -5
  42. data/{xml → recog/xml}/sip_user_agents.xml +122 -27
  43. data/{xml → recog/xml}/smb_native_lm.xml +5 -5
  44. data/{xml → recog/xml}/smb_native_os.xml +25 -25
  45. data/{xml → recog/xml}/smtp_banners.xml +132 -131
  46. data/{xml → recog/xml}/smtp_debug.xml +0 -0
  47. data/{xml → recog/xml}/smtp_ehlo.xml +0 -0
  48. data/{xml → recog/xml}/smtp_expn.xml +0 -0
  49. data/{xml → recog/xml}/smtp_help.xml +1 -1
  50. data/{xml → recog/xml}/smtp_mailfrom.xml +0 -0
  51. data/{xml → recog/xml}/smtp_noop.xml +0 -0
  52. data/{xml → recog/xml}/smtp_quit.xml +0 -0
  53. data/{xml → recog/xml}/smtp_rcptto.xml +0 -0
  54. data/{xml → recog/xml}/smtp_rset.xml +0 -0
  55. data/{xml → recog/xml}/smtp_turn.xml +0 -0
  56. data/{xml → recog/xml}/smtp_vrfy.xml +0 -0
  57. data/{xml → recog/xml}/snmp_sysdescr.xml +1248 -1233
  58. data/{xml → recog/xml}/snmp_sysobjid.xml +13 -2
  59. data/{xml → recog/xml}/ssh_banners.xml +9 -5
  60. data/{xml → recog/xml}/telnet_banners.xml +83 -1
  61. data/{xml → recog/xml}/tls_jarm.xml +30 -2
  62. data/{xml → recog/xml}/x11_banners.xml +3 -3
  63. data/{xml → recog/xml}/x509_issuers.xml +24 -4
  64. data/{xml → recog/xml}/x509_subjects.xml +32 -3
  65. data/recog.gemspec +9 -5
  66. data/spec/data/external_example_fingerprint/hp_printer_ex_01.txt +1 -0
  67. data/spec/data/external_example_fingerprint/hp_printer_ex_02.txt +1 -0
  68. data/spec/data/external_example_fingerprint.xml +8 -0
  69. data/spec/data/external_example_illegal_path_fingerprint.xml +7 -0
  70. data/spec/lib/recog/db_spec.rb +84 -61
  71. data/spec/lib/recog/fingerprint_spec.rb +4 -4
  72. data/spec/lib/recog/match_reporter_spec.rb +22 -8
  73. data/spec/lib/recog/verify_reporter_spec.rb +8 -8
  74. data/spec/spec_helper.rb +4 -0
  75. data.tar.gz.sig +0 -0
  76. metadata +154 -142
  77. metadata.gz.sig +0 -0
  78. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -37
  79. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  80. data/.github/ISSUE_TEMPLATE/fingerprint_request.md +0 -27
  81. data/.github/PULL_REQUEST_TEMPLATE +0 -24
  82. data/.github/SECURITY.md +0 -35
  83. data/.github/dependabot.yml +0 -8
  84. data/.github/workflows/ci.yml +0 -26
  85. data/.github/workflows/verify.yml +0 -89
  86. data/.gitignore +0 -23
  87. data/.rspec +0 -3
  88. data/.ruby-gemset +0 -1
  89. data/.ruby-version +0 -1
  90. data/.snyk +0 -10
  91. data/.travis.yml +0 -25
  92. data/CONTRIBUTING.md +0 -276
  93. data/bin/recog_cleanup +0 -16
  94. data/bin/recog_export +0 -81
  95. data/bin/recog_standardize +0 -163
  96. data/bin/recog_verify +0 -63
  97. data/cpe-remap.yaml +0 -356
  98. data/features/data/failing_banners_fingerprints.xml +0 -20
  99. data/features/data/matching_banners_fingerprints.xml +0 -23
  100. data/features/data/multiple_banners_fingerprints.xml +0 -32
  101. data/features/data/no_tests.xml +0 -3
  102. data/features/data/sample_banner.txt +0 -2
  103. data/features/data/successful_tests.xml +0 -18
  104. data/features/data/tests_with_failures.xml +0 -20
  105. data/features/data/tests_with_warnings.xml +0 -17
  106. data/features/match.feature +0 -36
  107. data/features/support/aruba.rb +0 -3
  108. data/features/support/env.rb +0 -6
  109. data/features/verify.feature +0 -48
  110. data/identifiers/README.md +0 -70
  111. data/identifiers/fields.txt +0 -105
  112. data/identifiers/hw_device.txt +0 -84
  113. data/identifiers/hw_family.txt +0 -121
  114. data/identifiers/hw_product.txt +0 -461
  115. data/identifiers/os_architecture.txt +0 -10
  116. data/identifiers/os_device.txt +0 -75
  117. data/identifiers/os_family.txt +0 -234
  118. data/identifiers/os_product.txt +0 -350
  119. data/identifiers/service_family.txt +0 -249
  120. data/identifiers/service_product.txt +0 -764
  121. data/identifiers/vendor.txt +0 -847
  122. data/lib/recog/verifier_factory.rb +0 -13
  123. data/misc/convert_mysql_err +0 -61
  124. data/misc/order.xsl +0 -17
  125. data/requirements.txt +0 -2
  126. data/spec/lib/fingerprint_self_test_spec.rb +0 -175
  127. data/tools/dev/hooks/pre-commit +0 -21
  128. data/update_cpes.py +0 -250
@@ -486,6 +486,15 @@
486
486
  <param pos="0" name="os.cpe23" value="cpe:/o:dd-wrt:dd-wrt:-"/>
487
487
  </fingerprint>
488
488
 
489
+ <fingerprint pattern="^cff908861188a1246a35c3f8325c7d2c$">
490
+ <description>Tomato Router Firmware</description>
491
+ <example>cff908861188a1246a35c3f8325c7d2c</example>
492
+ <param pos="0" name="os.vendor" value="Tomato"/>
493
+ <param pos="0" name="os.family" value="Linux"/>
494
+ <param pos="0" name="os.product" value="Tomato"/>
495
+ <param pos="0" name="os.device" value="Router"/>
496
+ </fingerprint>
497
+
489
498
  <fingerprint pattern="^bad2c1f96cd66e70b4aa119e7270cc62|966e60f8eb85b7ea43a7b0095f3e2336$">
490
499
  <description>Atlassian Confluence</description>
491
500
  <example>bad2c1f96cd66e70b4aa119e7270cc62</example>
@@ -493,7 +502,7 @@
493
502
  <param pos="0" name="service.vendor" value="Atlassian"/>
494
503
  <param pos="0" name="service.product" value="Confluence"/>
495
504
  <param pos="0" name="service.certainty" value="0.5"/>
496
- <param pos="0" name="service.cpe23" value="cpe:/a:atlassian:confluence:-"/>
505
+ <param pos="0" name="service.cpe23" value="cpe:/a:atlassian:confluence_server:-"/>
497
506
  </fingerprint>
498
507
 
499
508
  <fingerprint pattern="^0fbe700fd7d07ec8d30ef8b3ac261484$">
@@ -770,13 +779,19 @@
770
779
  </fingerprint>
771
780
 
772
781
  <fingerprint pattern="^97c6417ed01bdc0ae3ef32ae4894fd03|e2f298e9811cd34a08bf5bb69e2d1d6a$">
773
- <description>Jupyter Notebook</description>
782
+ <description>Jupyter Products</description>
774
783
  <example>97c6417ed01bdc0ae3ef32ae4894fd03</example>
775
784
  <example>e2f298e9811cd34a08bf5bb69e2d1d6a</example>
776
785
  <param pos="0" name="service.vendor" value="Jupyter"/>
777
- <param pos="0" name="service.product" value="Notebook"/>
778
786
  <param pos="0" name="service.certainty" value="0.5"/>
779
- <param pos="0" name="service.cpe23" value="cpe:/a:jupyter:notebook:-"/>
787
+ </fingerprint>
788
+
789
+ <fingerprint pattern="^7102bb857703a0fece6d039a6777fc3f$">
790
+ <description>Jupyter BinderHub</description>
791
+ <example>7102bb857703a0fece6d039a6777fc3f</example>
792
+ <param pos="0" name="service.vendor" value="Jupyter"/>
793
+ <param pos="0" name="service.product" value="BinderHub"/>
794
+ <param pos="0" name="service.cpe23" value="cpe:/a:jupyter:binderhub:-"/>
780
795
  </fingerprint>
781
796
 
782
797
  <fingerprint pattern="^36b3ef286fa4befbb797a0966b456479$">
@@ -1278,10 +1293,11 @@
1278
1293
  <param pos="0" name="hw.certainty" value="0.5"/>
1279
1294
  </fingerprint>
1280
1295
 
1281
- <fingerprint pattern="^c60ea375c39d1ab273c4d1bee717287a|9052ab290483b0bd75c05b857c182bba$">
1296
+ <fingerprint pattern="^c60ea375c39d1ab273c4d1bee717287a|9052ab290483b0bd75c05b857c182bba|3acbef1d83ac34f19a2631d6c1a4ac57$">
1282
1297
  <description>Synology DSM</description>
1283
1298
  <example>c60ea375c39d1ab273c4d1bee717287a</example>
1284
1299
  <example>9052ab290483b0bd75c05b857c182bba</example>
1300
+ <example>3acbef1d83ac34f19a2631d6c1a4ac57</example>
1285
1301
  <param pos="0" name="hw.vendor" value="Synology"/>
1286
1302
  <param pos="0" name="hw.family" value="DiskStation"/>
1287
1303
  <param pos="0" name="hw.device" value="NAS"/>
@@ -1327,10 +1343,13 @@
1327
1343
  <description>pfSense Firewall</description>
1328
1344
  <example>5567e9ce23e5549e0fcd7195f3882816</example>
1329
1345
  <example>57f187c7a868faeac558007a8eb6cb2e</example>
1330
- <param pos="0" name="hw.vendor" value="pfSense"/>
1331
- <param pos="0" name="hw.device" value="Firewall"/>
1332
- <param pos="0" name="hw.product" value="Firewall"/>
1333
- <param pos="0" name="hw.certainty" value="0.5"/>
1346
+ <param pos="0" name="service.vendor" value="pfSense"/>
1347
+ <param pos="0" name="service.product" value="pfSense"/>
1348
+ <param pos="0" name="service.device" value="Firewall"/>
1349
+ <param pos="0" name="service.cpe23" value="cpe:/a:pfsense:pfsense:-"/>
1350
+ <param pos="0" name="service.component.vendor" value="nginx"/>
1351
+ <param pos="0" name="service.component.product" value="nginx"/>
1352
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:f5:nginx:-"/>
1334
1353
  <param pos="0" name="os.vendor" value="pfSense"/>
1335
1354
  <param pos="0" name="os.product" value="FreeBSD"/>
1336
1355
  <param pos="0" name="os.certainty" value="0.5"/>
@@ -1943,9 +1962,148 @@
1943
1962
  <param pos="0" name="os.vendor" value="LG"/>
1944
1963
  <param pos="0" name="os.product" value="webOS"/>
1945
1964
  <param pos="0" name="os.certainty" value="0.5"/>
1965
+ <param pos="0" name="os.cpe23" value="cpe:/o:lg:webos:-"/>
1946
1966
  <param pos="0" name="hw.vendor" value="LG"/>
1947
1967
  <param pos="0" name="hw.device" value="Smart TV"/>
1948
1968
  <param pos="0" name="hw.certainty" value="0.5"/>
1949
1969
  </fingerprint>
1950
1970
 
1971
+ <fingerprint pattern="^dd80f14145f075264b3067801f511c2f$">
1972
+ <description>Covenant .NET C2 framework</description>
1973
+ <example>dd80f14145f075264b3067801f511c2f</example>
1974
+ <param pos="0" name="service.product" value="Covenant"/>
1975
+ </fingerprint>
1976
+
1977
+ <fingerprint pattern="^5508e5abca6493613e11c72f4296ebf4$">
1978
+ <description>MITRE CALDERA C2 framework</description>
1979
+ <example>5508e5abca6493613e11c72f4296ebf4</example>
1980
+ <param pos="0" name="service.vendor" value="MITRE"/>
1981
+ <param pos="0" name="service.product" value="CALDERA"/>
1982
+ <param pos="0" name="service.cpe23" value="cpe:/a:mitre:caldera:-"/>
1983
+ </fingerprint>
1984
+
1985
+ <fingerprint pattern="^e4ce127909d4697b97bf404a42e7c428$">
1986
+ <description>mitmweb web interface for mitmproxy - https://github.com/mitmproxy/mitmproxy</description>
1987
+ <example>e4ce127909d4697b97bf404a42e7c428</example>
1988
+ <param pos="0" name="service.vendor" value="mitmproxy"/>
1989
+ <param pos="0" name="service.product" value="mitmproxy"/>
1990
+ <param pos="0" name="service.cpe23" value="cpe:/a:mitmproxy:mitmproxy:-"/>
1991
+ </fingerprint>
1992
+
1993
+ <fingerprint pattern="^531b63a51234bb06c9d77f219eb25553$">
1994
+ <description>phpMyAdmin web interface for MySQL and MariaDB</description>
1995
+ <example>531b63a51234bb06c9d77f219eb25553</example>
1996
+ <param pos="0" name="service.vendor" value="phpMyAdmin"/>
1997
+ <param pos="0" name="service.product" value="phpMyAdmin"/>
1998
+ <param pos="0" name="service.cpe23" value="cpe:/a:phpmyadmin:phpmyadmin:-"/>
1999
+ </fingerprint>
2000
+
2001
+ <fingerprint pattern="^ded14e8b701325c527da56f86b5d5616$">
2002
+ <description>Adminer database management tool</description>
2003
+ <example>ded14e8b701325c527da56f86b5d5616</example>
2004
+ <param pos="0" name="service.vendor" value="Adminer"/>
2005
+ <param pos="0" name="service.product" value="Adminer"/>
2006
+ <param pos="0" name="service.cpe23" value="cpe:/a:adminer:adminer:-"/>
2007
+ </fingerprint>
2008
+
2009
+ <fingerprint pattern="^6f6256748d679d8684123363bd50a8dd$">
2010
+ <description>mongo-express web-based MongoDB admin interface</description>
2011
+ <example>6f6256748d679d8684123363bd50a8dd</example>
2012
+ <param pos="0" name="service.vendor" value="mongo-express Project"/>
2013
+ <param pos="0" name="service.product" value="mongo-express"/>
2014
+ <param pos="0" name="service.cpe23" value="cpe:/a:mongo-express_project:mongo-express:-"/>
2015
+ </fingerprint>
2016
+
2017
+ <fingerprint pattern="^ce83d230195be7e6d3f1513cc5057da5$">
2018
+ <description>Apache Solr</description>
2019
+ <example>ce83d230195be7e6d3f1513cc5057da5</example>
2020
+ <param pos="0" name="service.vendor" value="Apache"/>
2021
+ <param pos="0" name="service.product" value="Solr"/>
2022
+ <param pos="0" name="service.cpe23" value="cpe:/a:apache:solr:-"/>
2023
+ </fingerprint>
2024
+
2025
+ <fingerprint pattern="^165de54ff29d30a3773c53e7911227d3$">
2026
+ <description>Apache Spark</description>
2027
+ <example>165de54ff29d30a3773c53e7911227d3</example>
2028
+ <param pos="0" name="service.vendor" value="Apache"/>
2029
+ <param pos="0" name="service.product" value="Spark"/>
2030
+ <param pos="0" name="service.cpe23" value="cpe:/a:apache:spark:-"/>
2031
+ </fingerprint>
2032
+
2033
+ <fingerprint pattern="^a3dcb28303f26786e262e0760781057a$">
2034
+ <description>Eltex device web interface</description>
2035
+ <example>a3dcb28303f26786e262e0760781057a</example>
2036
+ <param pos="0" name="os.vendor" value="Eltex"/>
2037
+ <param pos="0" name="hw.vendor" value="Eltex"/>
2038
+ </fingerprint>
2039
+
2040
+ <fingerprint pattern="^1ecd8df7909afd77188cee9c33042c55$">
2041
+ <description>WatchGuard Fireware XTM web interface</description>
2042
+ <example>1ecd8df7909afd77188cee9c33042c55</example>
2043
+ <param pos="0" name="service.vendor" value="WatchGuard"/>
2044
+ <param pos="0" name="service.product" value="Fireware XTM"/>
2045
+ <param pos="0" name="service.device" value="Firewall"/>
2046
+ <param pos="0" name="service.cpe23" value="cpe:/a:watchguard:fireware_xtm:-"/>
2047
+ <param pos="0" name="service.component.vendor" value="nginx"/>
2048
+ <param pos="0" name="service.component.product" value="nginx"/>
2049
+ <param pos="0" name="service.component.cpe23" value="cpe:/a:f5:nginx:-"/>
2050
+ <param pos="0" name="os.vendor" value="WatchGuard"/>
2051
+ <param pos="0" name="os.product" value="Fireware"/>
2052
+ <param pos="0" name="os.device" value="Firewall"/>
2053
+ <param pos="0" name="os.cpe23" value="cpe:/o:watchguard:fireware:-"/>
2054
+ </fingerprint>
2055
+
2056
+ <fingerprint pattern="^20197040d99f50747a953d163fef982e$">
2057
+ <description>WSO2 Carbon - service-oriented platform for WSO2 products</description>
2058
+ <example>20197040d99f50747a953d163fef982e</example>
2059
+ <param pos="0" name="service.vendor" value="WSO2"/>
2060
+ <param pos="0" name="service.product" value="Carbon"/>
2061
+ <param pos="0" name="service.cpe23" value="cpe:/a:wso2:carbon:-"/>
2062
+ </fingerprint>
2063
+
2064
+ <fingerprint pattern="^e562faa1b6f61ff53762e59d738b8fc0$">
2065
+ <description>openHAB - open-source home automation</description>
2066
+ <example>e562faa1b6f61ff53762e59d738b8fc0</example>
2067
+ <param pos="0" name="service.vendor" value="openHAB"/>
2068
+ <param pos="0" name="service.product" value="openHAB"/>
2069
+ <param pos="0" name="service.cpe23" value="cpe:/a:openhab:openhab:-"/>
2070
+ </fingerprint>
2071
+
2072
+ <fingerprint pattern="^ff66cb4b6922631e08d1538b361a2d2b$">
2073
+ <description>Home Assistant - open-source home automation</description>
2074
+ <example>ff66cb4b6922631e08d1538b361a2d2b</example>
2075
+ <param pos="0" name="service.vendor" value="Home-Assistant"/>
2076
+ <param pos="0" name="service.product" value="Home-Assistant"/>
2077
+ <param pos="0" name="service.cpe23" value="cpe:/a:home-assistant:home-assistant:-"/>
2078
+ </fingerprint>
2079
+
2080
+ <fingerprint pattern="^7d33656392385d5ce695db69c7736608$">
2081
+ <description>Alentis Electronics NetPing PDU web interface</description>
2082
+ <example>7d33656392385d5ce695db69c7736608</example>
2083
+ <param pos="0" name="os.vendor" value="Alentis Electronics"/>
2084
+ <param pos="0" name="os.product" value="NetPing Firmware"/>
2085
+ <param pos="0" name="os.device" value="Power Device"/>
2086
+ <param pos="0" name="hw.vendor" value="Alentis Electronics"/>
2087
+ <param pos="0" name="hw.product" value="NetPing"/>
2088
+ <param pos="0" name="hw.device" value="Power Device"/>
2089
+ </fingerprint>
2090
+
2091
+ <fingerprint pattern="^e174f317b4491295c63e5bc9d9b6115b|cd2461f62d76fbbc905fa15160c0788f|37fdaeebc861719280205e7107b78d52$">
2092
+ <description>dotCMS Content Management Platform</description>
2093
+ <example>e174f317b4491295c63e5bc9d9b6115b</example>
2094
+ <example>cd2461f62d76fbbc905fa15160c0788f</example>
2095
+ <example>37fdaeebc861719280205e7107b78d52</example>
2096
+ <param pos="0" name="service.vendor" value="dotCMS"/>
2097
+ <param pos="0" name="service.product" value="dotCMS"/>
2098
+ <param pos="0" name="service.cpe23" value="cpe:/a:dotcms:dotcms:-"/>
2099
+ </fingerprint>
2100
+
2101
+ <fingerprint pattern="^8c7d1c14e4b9c42f07bd6b800d93b806$">
2102
+ <description>Zimbra Collaboration</description>
2103
+ <example>8c7d1c14e4b9c42f07bd6b800d93b806</example>
2104
+ <param pos="0" name="service.vendor" value="Zimbra"/>
2105
+ <param pos="0" name="service.product" value="Collaboration"/>
2106
+ <param pos="0" name="service.cpe23" value="cpe:/a:zimbra:collaboration:-"/>
2107
+ </fingerprint>
2108
+
1951
2109
  </fingerprints>
@@ -104,16 +104,24 @@
104
104
  <xsd:sequence>
105
105
  <xsd:element name="description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
106
106
  <xsd:element name="example" type="example_element" minOccurs="0" maxOccurs="unbounded"/>
107
- <xsd:element name="param" type="param_element" minOccurs="0" maxOccurs="unbounded"/>
107
+ <xsd:element name="param" type="param_element" minOccurs="1" maxOccurs="unbounded"/>
108
108
  </xsd:sequence>
109
109
  <xsd:attribute name="certainty" type="xsd:string" use="optional"/>
110
110
  <xsd:attribute name="pattern" type="xsd:string" use="required"/>
111
111
  <xsd:attribute name="flags" type="xsd:string" use="optional"/>
112
112
  </xsd:complexType>
113
113
 
114
+ <xsd:simpleType name="encoding">
115
+ <xsd:restriction base="xsd:string">
116
+ <xsd:enumeration value="base64" />
117
+ </xsd:restriction>
118
+ </xsd:simpleType>
119
+
114
120
  <xsd:complexType name="example_element">
115
121
  <xsd:simpleContent>
116
122
  <xsd:extension base="xsd:string">
123
+ <xsd:attribute name="_encoding" type="encoding"/>
124
+ <xsd:attribute name="_filename" type="xsd:string"/>
117
125
  <xsd:anyAttribute processContents="skip"/>
118
126
  </xsd:extension>
119
127
  </xsd:simpleContent>