aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/make-manuf.py38
-rwxr-xr-xtools/make-usb.py36
2 files changed, 34 insertions, 40 deletions
diff --git a/tools/make-manuf.py b/tools/make-manuf.py
index 08f0eb2471..53b8aa920b 100755
--- a/tools/make-manuf.py
+++ b/tools/make-manuf.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Wireshark - Network traffic analyzer
@@ -20,17 +20,13 @@ the listing in "oui.txt", "iab.txt", etc, with the entries in
"manuf.tmpl" taking precedence.
'''
+import codecs
import csv
import io
import os
import re
import sys
-
-if sys.version_info[0] >= 3:
- import urllib.request, urllib.error, urllib.parse
- import codecs
-else:
- import urllib2
+import urllib.request, urllib.error, urllib.parse
have_icu = False
try:
@@ -54,14 +50,9 @@ def open_url(url):
'''
req_headers = { 'User-Agent': 'Wireshark make-manuf' }
try:
- if sys.version_info[0] >= 3:
- req = urllib.request.Request(url, headers=req_headers)
- response = urllib.request.urlopen(req)
- body = response.read().decode('UTF-8', 'replace')
- else:
- req = urllib2.Request(url, headers=req_headers)
- response = urllib2.urlopen(req)
- body = response.read()
+ req = urllib.request.Request(url, headers=req_headers)
+ response = urllib.request.urlopen(req)
+ body = response.read().decode('UTF-8', 'replace')
except:
exit_msg('Error opening ' + url)
@@ -137,6 +128,10 @@ def prefix_to_oui(prefix):
return '{}/{:d}'.format(oui, int(pfx_len))
def main():
+ if sys.version_info[0] < 3:
+ print("This requires Python 3")
+ sys.exit(2)
+
this_dir = os.path.dirname(__file__)
template_path = os.path.join(this_dir, '..', 'manuf.tmpl')
manuf_path = os.path.join(this_dir, '..', 'manuf')
@@ -190,12 +185,8 @@ def main():
print('Merging {} data from {}'.format(db, db_url))
(body, response_d) = open_url(db_url)
ieee_csv = csv.reader(body.splitlines())
- if sys.version_info[0] >= 3:
- ieee_d[db]['last-modified'] = response_d['Last-Modified']
- ieee_d[db]['length'] = response_d['Content-Length']
- else:
- ieee_d[db]['last-modified'] = response_d['last-modified']
- ieee_d[db]['length'] = response_d['content-length']
+ ieee_d[db]['last-modified'] = response_d['Last-Modified']
+ ieee_d[db]['length'] = response_d['Content-Length']
# Pop the title row.
next(ieee_csv)
@@ -203,10 +194,7 @@ def main():
#Registry,Assignment,Organization Name,Organization Address
#IAB,0050C2DD6,Transas Marine Limited,Datavagen 37 Askim Vastra Gotaland SE 436 32
oui = prefix_to_oui(ieee_row[1].upper())
- if sys.version_info[0] >= 3:
- manuf = ieee_row[2].strip()
- else:
- manuf = ieee_row[2].strip().decode('UTF-8')
+ manuf = ieee_row[2].strip()
if oui in oui_d:
print(u'{} - Skipping IEEE "{}" in favor of "{}"'.format(oui, manuf, oui_d[oui]))
ieee_d[db]['skipped'] += 1
diff --git a/tools/make-usb.py b/tools/make-usb.py
index bc9c6cb236..19d776bd85 100755
--- a/tools/make-usb.py
+++ b/tools/make-usb.py
@@ -1,4 +1,5 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
#
# make-usb - Creates a file containing vendor and product ids.
# It use the databases at
@@ -9,11 +10,7 @@
import re
import sys
-
-if sys.version_info[0] < 3:
- import urllib
-else:
- import urllib.request, urllib.error, urllib.parse
+import urllib.request, urllib.error, urllib.parse
MODE_IDLE = 0
MODE_VENDOR_PRODUCT = 1
@@ -22,12 +19,15 @@ MIN_PRODUCTS = 15000 # 15415 as of 2015-06-28
mode = MODE_IDLE
-# Grab from linux-usb.org
if sys.version_info[0] < 3:
- response = urllib.urlopen('http://www.linux-usb.org/usb.ids')
-else:
- response = urllib.request.urlopen('http://www.linux-usb.org/usb.ids')
-lines = response.read().splitlines()
+ print("This requires Python 3")
+ sys.exit(2)
+
+# Grab from linux-usb.org
+req_headers = { 'User-Agent': 'Wireshark make-usb' }
+req = urllib.request.Request('http://www.linux-usb.org/usb.ids', headers=req_headers)
+response = urllib.request.urlopen(req)
+lines = response.read().decode('UTF-8', 'replace').splitlines()
vendors = dict()
products = dict()
@@ -35,8 +35,14 @@ vendors_str="static const value_string usb_vendors_vals[] = {\n"
products_str="static const value_string usb_products_vals[] = {\n"
-for line in lines:
- line = line.rstrip()
+for utf8line in lines:
+ # Convert single backslashes to double (escaped) backslashes, escape quotes, etc.
+ utf8line = utf8line.rstrip()
+ utf8line = utf8line.replace('\\', '\\\\')
+ utf8line = utf8line.replace('"', '\\"')
+ utf8line = re.sub("\?+", "?", utf8line)
+ # Finally, convert non-ASCII UTF-8 sequences to C-style escapes
+ line = utf8line.encode('UTF-8').decode('ascii', 'backslashreplace')
if line == "# Vendors, devices and interfaces. Please keep sorted.":
mode = MODE_VENDOR_PRODUCT
@@ -48,11 +54,11 @@ for line in lines:
if mode == MODE_VENDOR_PRODUCT:
if re.match("^[0-9a-f]{4}", line):
last_vendor=line[:4]
- vendors[last_vendor] = re.sub("\"", "\\\"", re.sub("\?+", "?", repr(line[4:].strip())[1:-1].replace("\\", "\\\\")))
+ vendors[last_vendor] = line[4:].strip()
elif re.match("^\t[0-9a-f]{4}", line):
line = line.strip()
product = "%s%s"%(last_vendor, line[:4])
- products[product] = re.sub("\"", "\\\"", re.sub("\?+", "?", repr(line[4:].strip())[1:-1].replace("\\", "\\\\")))
+ products[product] = line[4:].strip()
# Grab from libgphoto (indirectly through tools/usb-ptp-extract-models.pl)