88 Commits

Author SHA1 Message Date
Florian Magin 2ce2224421 Fix printing by regressing to using pwn directly 2020-02-27 14:55:02 +01:00
Florian Magin 104a35a79a Fix pwnlib related refactor so it still works with python2 2020-02-27 14:41:45 +01:00
Florian Magin e6b99906c9 Remove all 'from pwn import *' in internalblue code 2020-02-27 13:00:01 +01:00
Florian Magin d3059b01d8 Fix subtle byte vs int issues ( 0 != '\x00 is True) 2020-02-27 11:18:21 +01:00
Florian Magin a7066170fc Declare startup trace on adbcore as flaky (works when run directly, doesn't work as part of suite) 2020-02-27 11:13:47 +01:00
Davide Toldo 748c713f67 Fix one of the traces in Python 3 2020-02-23 16:58:01 +01:00
Florian Magin 0864e96569 Propagate exceptions to test framework, ensure required pwnlibs version, ensure that traces don't abort early 2020-02-20 15:23:03 +01:00
Davide Toldo c6e39cb18f * Make pytest testcases Python 2 & 3 compatible
* Make InternalBlue start with ADBCore in Python 3
* Make InternalBlue start with HCICore in Python 3
* Substitute var.decode('hex') with bytearray.fromhex(var) in most places I found which works in Python 2 and 3 and performs the same task
* Substitute var.encode('hex') with new byte_to_hex function that works with Python 2 and 3 (in util.py)
* Declare variables explicitly as bytes instead of strings
* Fix small issue in macOS Core (explicit declaration of variable as byte)
2020-02-17 03:02:59 +01:00
Davide Toldo 07c5c4c336 * CLI now starts up (at least on mac) on Python 2 and 3
* Tests run, some throw errors.
2020-02-16 20:07:23 +01:00
Florian Magin 01589f8eee Hack around pwnlibs treating everything as bytes 2020-02-15 16:58:54 +01:00
Florian Magin d9de8f0d83 Some byte fixes in hcicore 2020-02-15 16:58:19 +01:00
Florian Magin 9b8d5b0740 Move requirements to setup.py 2020-02-15 16:51:43 +01:00
Florian Magin e53edb1ec9 Some byte fixes 2020-02-15 16:51:30 +01:00
Florian Magin b72e12b5a6 Fix subtle syntax change for python3 2020-02-15 16:39:59 +01:00
Florian Magin d7b3b8e7a1 First steps of automatic Python3 conversion
Commands in order:
- `futurize ./ -w -n`

- git grep -l "queue\.Empty" | xargs sed -i 's/queue\.Empty/queue2k.Empty/'

- git grep -l "queue\.Queue" | xargs sed -i 's/queue\.Queue/queue2k.Queue/'

- git grep -l "import queue" | xargs sed -i 's/import queue/import queue as queue2k/'

The search and replaces are needed because the local variables named
`queue` break the module that is called `queue` instead of `Queue` in
Python3

The testcases all still pass with python 2 but with python3 break
completely due to pwnlib issues
2020-02-15 15:52:12 +01:00
Florian Magin 2e49149639 Make ReplaySocket less verbose 2020-02-15 15:39:13 +01:00
Florian Magin 71b706139f Remove broken attempt at logging replacement 2020-02-15 14:48:23 +01:00
Florian Magin 2d713fcba6 Rename and skip broken trace tests 2020-02-15 14:35:57 +01:00
Florian Magin 79c94ab48b Move parsing logic to ConnectionInformation class 2020-02-15 14:28:37 +01:00
Florian Magin d691765c2b Linting related changes 2020-02-15 14:28:37 +01:00
Davide Toldo 004ee68fe5 Create object to pass around connection information instead of a dictionary 2020-02-15 14:28:37 +01:00
Davide Toldo fce72a2e8d Create object to pass around queue information instead of a dictionary
Signed-off-by: Davide Toldo <davide.toldo@stud.tu-darmstadt.de>
2020-02-15 14:28:37 +01:00
Davide Toldo b57d3d417f Add test for third dictionary (queue info) 2020-02-15 14:28:37 +01:00
Davide Toldo 4e9e82619a Add test for second dictionary, but new heap structure 2020-02-15 14:28:37 +01:00
Davide Toldo 657714acc6 Add test for second dictionary 2020-02-15 14:28:37 +01:00
Florian Magin 3b0478b0a5 First dict nosetest (#15)
* Add nose test for connection information retrieval

* forgot to add the required testcase

* Add new info connections trace where a device is actually connected

* Add nose test for connection information retrieval with real device connected

* Clean up structure
Add Galaxy S8 traces (new heap structure)
Delete unnecessary, failing macOS trace

* Add two more traces that cover the new memory layout branch in readHeapInformation

* Turn info_conn into proper tests

* Move the trace tests to a separate module

Co-authored-by: Davide Toldo <davidetoldo@posteo.de>
2020-02-15 14:28:37 +01:00
Florian Magin b386edbee1 Save all exceptions in the hooks into the core and add better error printing to the main thread (only works if some hook is active for now) 2020-02-15 14:28:37 +01:00
Florian Magin 6badef2279 Fix Hook Signatures to include the reference to the running core 2020-02-15 14:28:37 +01:00
Florian Magin f8e638e277 Allow main thread to detect when the send thread crashed with an AssertError and reraise it for full context and so testing frameworks can detect the failure 2020-02-15 14:28:37 +01:00
Florian Magin 1dfcc04a51 Remove the old method that manually searched the tests. Replaced with generate_test_suite to generate a UnittestSuite 2020-02-15 14:28:37 +01:00
Florian Magin 20a458d483 Rename the test function so it doesn't start with "test_" which confuses test frameworks and makes it clear that this function isn't a valid testcase by itself 2020-02-15 14:28:37 +01:00
Davide Toldo 8f63c5620e * Add ability to send ACL Data in macOS
* Clean up IOBluetoothExtended framework
2020-02-15 14:28:37 +01:00
Davide Toldo 1e88694f69 Add second patchrom trace for ADB Core for other branch 2020-02-15 14:28:37 +01:00
Davide Toldo 47640bdd58 Add patchrom trace for ADB Core 2020-02-15 14:28:37 +01:00
Florian Magin b10c6764b8 Allow test module to be tested with unittest by dynamically generating a test suite from trace files 2020-02-15 14:28:37 +01:00
Davide Toldo 9d4dab89f9 Add connection created / completed trace 2020-02-15 14:28:37 +01:00
Florian Magin 9e10339c9b More adbcore traces 2020-02-15 14:28:37 +01:00
Florian Magin e2fca88f2e Refactor replaying to centralise replay logic 2020-02-15 14:28:37 +01:00
Florian Magin 54470b7395 Mitigate race condition in replay 2020-02-15 14:28:37 +01:00
Davide Toldo d71e422884 Update gitignore 2020-02-15 14:28:37 +01:00
Davide Toldo c7ba318014 Add some traces 2020-02-15 14:28:37 +01:00
Davide Toldo 68d87b6e66 Hook ADBCore 2020-02-15 14:28:37 +01:00
Davide Toldo 4df59ca00c Make macos core less verbose (forgot to remove line) 2020-02-15 14:28:37 +01:00
Davide Toldo d9fd55bded Add 2 ADB traces 2020-02-15 14:27:35 +01:00
Florian Magin 532c36f8c9 Add wrappers to run trace tests via Python (to support IDE integration) 2020-02-15 14:27:35 +01:00
Florian Magin e339d34eca Allow CLI arguments to be passed in via an already parsed namespace instead 2020-02-15 14:27:35 +01:00
Florian Magin f1dadd9e79 Add command to hexdump trace 2020-02-15 14:27:35 +01:00
Florian Magin 225924ed5a Remove broken trace files 2020-02-15 14:27:35 +01:00
Florian Magin 96a9857229 Move traces to dedicate folders per core 2020-02-15 14:27:35 +01:00
Davide Toldo fc8258a072 Fix getsockname hook to work with macos framework 2020-02-15 14:27:35 +01:00
Davide Toldo 7f792d44cf Add pyobjc as optional dependency for macoscore 2020-02-15 14:27:35 +01:00
Florian Magin c0c3583361 Fix readafh.trace 2020-02-15 14:27:35 +01:00
Florian Magin bfa8902e56 Only close sockets once 2020-02-15 14:27:35 +01:00
Florian Magin 246fcd4e3e Fix MacOS replay and make it work on non MacOS platforms 2020-02-15 14:27:35 +01:00
Davide Toldo 21377ee4da Move init of IOBE to initializer of macOS core 2020-02-15 14:27:35 +01:00
Davide Toldo 9a33fda745 Add startup trace 2020-02-15 14:27:35 +01:00
Davide Toldo 4642ff4fa5 Add some traces 2020-02-15 14:27:35 +01:00
Florian Magin 1927b2ed15 Add generic trace test, example traces, and allow command to be specified in trace 2020-02-15 14:27:35 +01:00
Davide Toldo 7472ddf388 Make tracing work on macOS (sort of) 2020-02-15 14:27:35 +01:00
Florian Magin ac94f9295d Implement save and replay of traces 2020-02-15 14:27:35 +01:00
Florian Magin b81e4c861a Hci hooking (#13)
* Partial refactoring of hooking

* Fix logging in core.py and print exceptions in _sendThreadFunc in the log

* Refactor hci hooking
2020-02-15 14:27:35 +01:00
Florian Magin ca7a2071b1 Add recvfrom in SocketRecvHook 2020-02-15 14:27:35 +01:00
Florian Magin 3902a17680 Add lowest level HCI tracing functionality 2020-02-15 14:27:35 +01:00
Florian Magin 13c435b56e Fix minor None check 2020-02-15 14:27:35 +01:00
Florian Magin 63b4177a65 Allow specification of decive via CLI arg 2020-02-15 14:27:35 +01:00
Florian Magin 4979dfd428 Add type annotation to device_list 2020-02-15 14:27:35 +01:00
Florian Magin 8a5f478ed3 Add required interface methods as NotImplemented 2020-02-15 14:27:35 +01:00
Florian Magin 2d97d0cb13 Add hci command test 2020-02-15 14:27:35 +01:00
Florian Magin a2e3929512 Add first testcases 2020-02-15 14:27:35 +01:00
Florian Magin e73299de42 Make args to internalblue_cli explicit so it can be called with custom args from python 2020-02-15 14:27:35 +01:00
Florian Magin b2c0ff6a62 Annotate testcore device_list 2020-02-15 14:27:35 +01:00
Florian Magin fdc47f52f8 Remove usage of logging wrapper for now 2020-02-15 14:27:35 +01:00
Florian Magin 5141aafaa9 Add --overwrite to memdump for testing 2020-02-15 14:27:35 +01:00
Florian Magin 8bc9b2c373 Add logging wrapper 2020-02-15 14:27:35 +01:00
Florian Magin c3d6c6dd6b Add init command argument for testing 2020-02-15 14:27:35 +01:00
Florian Magin 40909ed594 Annotations and import fixes 2020-02-15 14:27:35 +01:00
Florian Magin 29fd6420dd Minor fixes and annotations 2020-02-15 14:27:35 +01:00
Florian Magin 87a9496a19 Add type annotations for cmds 2020-02-15 14:27:35 +01:00
Florian Magin 62eda55e32 Type annotations for core.py and general type aliases 2020-02-15 14:27:35 +01:00
Davide Toldo eacd04811b Add write memory functionality to testcore 2020-02-15 14:27:35 +01:00
Davide Toldo 5959cd70f2 Fix bug 2020-02-15 14:27:35 +01:00
Davide Toldo ec3bddd71b Fix bug 2020-02-15 14:27:35 +01:00
Davide Toldo c8cda935a6 Some cleanup 2020-02-15 14:27:35 +01:00
Davide Toldo 854f57a3f9 Functional startup and memory reads 2020-02-15 14:27:35 +01:00
Jiska Classen e89a84812e updated readme 2020-02-06 00:55:20 +01:00
Jiska Classen dd9d76cff9 Merge branch 'master' of https://dev.seemoo.tu-darmstadt.de/bcm/internalblue 2020-02-03 23:38:32 +01:00
Jiska Classen 58f9688b84 updated firmware files 2020-02-03 23:38:00 +01:00
Davide Toldo 45ec18744e Make macos core less verbose (forgot to remove line) 2020-01-22 12:52:07 +01:00
93 changed files with 8816 additions and 345 deletions
+8
View File
@@ -17,3 +17,11 @@ btsnoop.log
# xcode
xcuserdata
*.xcworkspace
macos-framework/IOBluetoothExtended.framework/
# venv
venv
venv3
# pycharm
*.idea
+12 -1
View File
@@ -54,6 +54,17 @@ was also recorded and gives a more high level overview.
Our talk [Playing with Bluetooth](https://media.ccc.de/v/2019-185-playing-with-bluetooth) focuses on new device support
within *InternalBlue* and the Patchram state of various devices.
* **36C3 Talk** (12/2019)
The rather generic talk [All wireless communication stacks are equally broken](https://media.ccc.de/v/36c3-10531-all_wireless_communication_stacks_are_equally_broken)
points out a couple of new research directions and new Bluetooth projects coming up.
* **EWSN Paper & Demo** (02/2020)
We did some work on improving blacklisting performance of BLE data connections. Currently in a separate *blacklisting* branch.
Supported Features
@@ -214,7 +225,7 @@ can replace them with anything you want.
License
-------
Copyright 2018-2019 Dennis Mantz, Jiska Classen
Copyright 2018-2020 The InternalBlue Team
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
BIN
View File
Binary file not shown.
+1
View File
@@ -4,6 +4,7 @@
# Get receive statistics on a Nexus 5 for BLE connection events
from builtins import range
from pwn import *
from internalblue.adbcore import ADBCore
import internalblue.hci as hci
+1
View File
@@ -4,6 +4,7 @@
# Get receive statistics on a Samsung Galaxy S8 for BLE connection events
from builtins import range
from pwn import *
from internalblue.adbcore import ADBCore
import internalblue.hci as hci
+36
View File
@@ -1 +1,37 @@
from future import standard_library
standard_library.install_aliases()
try:
from queue import Queue
from typing import List, Optional, Any, TYPE_CHECKING, Tuple, Union, NewType, Callable, Dict
if TYPE_CHECKING:
import datetime
from internalblue.hci import HCI
from internalblue.core import InternalBlue
Address = NewType("Address", int)
Record = Tuple[HCI, int, int, int, Any, datetime.datetime]
FilterFunction = Callable[[Record], bool]
ConnectionNumber = NewType("ConnectionNumber", int)
ConnectionIndex = NewType("ConnectionIndex", int)
BluetoothAddress = NewType("BluetoothAddress", bytes)
ConnectionDict = NewType("ConnectionDict", Dict[str,Any])
HeapInformation = NewType("HeapInformation", Dict[str, Any])
QueueInformation = NewType('QueueInformation', Dict[str, Any])
Opcode = NewType('Opcode', int)
HCI_CMD = NewType('HCI_CMD', int)
Task = Tuple[HCI_CMD, bytes, Queue.Queue, Callable[[Record], bool]]
Device = NewType("Device", Dict[str, Any])
"""{"dev_id": dev_id,
"dev_name": dev_name,
"dev_bdaddr": dev_bdaddr,
"dev_flags": dev_flags,
"dev_flags_str": dev_flags_str}"""
# InternalBlueCore, Device Name, SomeString
DeviceTuple = Tuple[InternalBlue, str, str]
except:
pass
View File
+22 -10
View File
@@ -1,20 +1,30 @@
#!/usr/bin/env python2
import struct
from time import sleep
from future import standard_library
from pwnlib import adb
from pwnlib.exception import PwnlibException
standard_library.install_aliases()
from builtins import str
import datetime
import socket
import Queue
import queue as queue2k
import random
import hci
from internalblue import hci
from internalblue.utils import bytes_to_hex
from pwn import *
from core import InternalBlue
from internalblue.utils.pwnlib_wrapper import log, context, u32
from .core import InternalBlue
class ADBCore(InternalBlue):
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', serial=False, data_directory="."):
super(ADBCore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory)
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', serial=False, data_directory=".", replay=False):
super(ADBCore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory, replay)
self.hciport = None # hciport is the port number of the forwarded HCI snoop port (8872). The inject port is at hciport+1
self.serial = serial # use serial su busybox scripting and do not try bluetooth.default.so
self.doublecheck = False
@@ -31,6 +41,8 @@ class ADBCore(InternalBlue):
log.warn("Already running. call shutdown() first!")
return []
if self.replay:
return [(self, "adb_replay", 'adb: ReplayDevice' )]
# Check for connected adb devices
try:
adb_devices = adb.devices()
@@ -139,7 +151,7 @@ class ADBCore(InternalBlue):
while(not self.exit_requested and len(record_hdr) < 24):
try:
recv_data = self.s_snoop.recv(24 - len(record_hdr))
log.debug("recvThreadFunc: received bt_snoop data " + recv_data.encode('hex'))
log.debug("recvThreadFunc: received bt_snoop data " + bytes_to_hex(recv_data))
if len(recv_data) == 0:
log.info("recvThreadFunc: bt_snoop socket was closed by remote site. stopping recv thread...")
self.exit_requested = True
@@ -161,7 +173,7 @@ class ADBCore(InternalBlue):
orig_len, inc_len, flags, drops, time64 = struct.unpack( ">IIIIq", record_hdr)
# Read the record data
record_data = b''
record_data = bytearray()
while(not self.exit_requested and len(record_data) < inc_len):
try:
recv_data = self.s_snoop.recv(inc_len - len(record_data))
@@ -169,7 +181,7 @@ class ADBCore(InternalBlue):
log.info("recvThreadFunc: bt_snoop socket was closed by remote site. stopping..")
self.exit_requested = True
break
record_data += recv_data
record_data += bytearray(recv_data)
except socket.timeout:
pass # this is ok. just try again without error
@@ -199,7 +211,7 @@ class ADBCore(InternalBlue):
if filter_function == None or filter_function(record):
try:
queue.put(record, block=False)
except Queue.Full:
except queue.Full:
log.warn("recvThreadFunc: A recv queue is full. dropping packets..")
# Call all callback functions inside registeredHciCallbacks and pass the
+131 -39
View File
@@ -28,16 +28,30 @@
# Software.
from pwn import *
from __future__ import print_function
import socket
import sys
from builtins import str
import internalblue.utils.pwnlib_wrapper as pwnlib
import os
import traceback
import argparse
from adbcore import ADBCore
from hcicore import HCICore
from .adbcore import ADBCore
from .hcicore import HCICore
from sys import platform
import cmds
from . import cmds
try:
import typing
from typing import List, Optional
from internalblue.core import InternalBlue
from . import DeviceTuple
except:
pass
HISTFILE = "_internalblue.hist"
@@ -51,53 +65,72 @@ def print_banner():
type <help> for usage information!\n\n"""
for line in banner:
term.output(text.blue(line))
pwnlib.term.output(pwnlib.text.blue(line))
def commandLoop(internalblue):
def commandLoop(internalblue, init_commands=None):
cmdstack = init_commands.split(';')[::-1] if init_commands else None
while internalblue.running and not internalblue.exit_requested:
cmd_instance = None
try:
cmdline = term.readline.readline(prompt='> ').strip()
if cmdstack:
cmdline = cmdstack.pop().strip()
else:
cmdline = pwnlib.term.readline.readline(prompt='> ').strip().decode('utf-8')
cmdword = cmdline.split(' ')[0].split('=')[0]
if(cmdword == ''):
continue
log.debug("Command Line: [[" + cmdword + "]] " + cmdline)
pwnlib.log.debug("Command Line: [[" + cmdword + "]] " + cmdline)
matching_cmd = cmds.findCmd(cmdword)
if matching_cmd == None:
log.warn("Command unknown: " + cmdline)
pwnlib.log.warn("Command unknown: " + cmdline)
continue
cmd_instance = matching_cmd(cmdline, internalblue)
if(not cmd_instance.work()):
log.warn("Command failed: " + str(cmd_instance))
pwnlib.log.warn("Command failed: " + str(cmd_instance))
except ValueError as e:
log.warn("commandLoop: ValueError: " + str(e))
continue
pwnlib.log.warn("commandLoop: ValueError: " + str(e))
raise
except KeyboardInterrupt:
if(cmd_instance != None):
cmd_instance.abort_cmd()
else:
log.info("Got Ctrl-C; exiting...")
pwnlib.log.info("Got Ctrl-C; exiting...")
internalblue.exit_requested = True
break
except AssertionError as e:
raise
except socket.error as e:
if e.args == (1, "Operation not permitted"):
pwnlib.log.critical("Received an 'Operation not permitted' socket.error, you might need root for the command '{}'".format(cmdline))
pwnlib.log.critical(traceback.format_exc())
except Exception as e:
internalblue.exit_requested = True # Make sure all threads terminate
log.critical("Uncaught exception (%s). Abort." % str(e))
pwnlib.log.critical("Uncaught exception (%s). Abort." % str(e))
print(traceback.format_exc())
break
raise
cmd_instance = None
# Main Program Start
def internalblue_cli():
print_banner()
def _parse_argv(argv):
parser = argparse.ArgumentParser()
parser.add_argument("--data-directory", "-d", help="Set data directory. Default: ~/.internalblue")
parser.add_argument("--verbose", "-v", help="Set log level to DEBUG", action="store_true")
parser.add_argument("--ios-device", "-i", help="Tell internalblue to connect to a remote iPhone HCI socket. Specify socket IP address and port (i.e., 172.20.10.1:1234).")
parser.add_argument("--serialsu", "-s", help="On ADB, directly try su/serial/busybox scripting, if you do not have a special bluetooth.default.so file.", action="store_true")
args = parser.parse_args()
parser.add_argument("--testdevice", "-t", help="Use a dummy test device to execute testcases", action="store_true")
parser.add_argument("--trace", help="Trace hci connection")
parser.add_argument("--device", help="Specify device/core to be used")
parser.add_argument("--commands", "-c", help="CLI command to run before prompting, seperated by ';' (used for easier testing)")
parser.add_argument("--replay", help="Intercept and replace every communication with the core with the one in the specified file")
parser.add_argument("--save", help="Store a trace into the file that can be used with --replay")
return parser.parse_args(argv)
# Main Program Start
def internalblue_cli(argv, args=None):
#print_banner()
args = args or _parse_argv(argv)
if args.data_directory is not None:
data_directory = args.data_directory
@@ -116,33 +149,90 @@ def internalblue_cli():
for cmd in cmds.getCmdList():
for keyword in cmd.keywords:
cmd_keywords.append(keyword)
readline_completer = term.completer.LongestPrefixCompleter(words=cmd_keywords)
term.readline.set_completer(readline_completer)
readline_completer = pwnlib.term.completer.LongestPrefixCompleter(words=cmd_keywords)
pwnlib.term.readline.set_completer(readline_completer)
if args.trace:
from .socket_hooks import hook
from internalblue import socket_hooks
HookClass = getattr(socket_hooks, args.trace)
hook(HCICore, HookClass)
hook(ADBCore, HookClass)
elif args.save:
from .socket_hooks import hook, TraceToFileHook
hook(HCICore, TraceToFileHook, filename=args.save)
hook(ADBCore, TraceToFileHook, filename=args.save)
# Initalize cores and get devices
# As macOS has additional dependencies (objc), only import it here if needed
if args.ios_device:
from ioscore import iOSCore
connection_methods = [] # type: List[InternalBlue]
if args.replay:
from .socket_hooks import hook, ReplaySocket
from .macoscore import macOSCore
replay_devices = ['macos_replay', 'adb_replay', 'hci_replay', 'ios_replay']
if args.device == "macos_replay":
from .macoscore import macOSCore
hook(macOSCore, ReplaySocket, filename=args.replay)
connection_methods = [macOSCore(log_level=log_level, data_directory=data_directory, replay=True)]
elif args.device == "hci_replay":
hook(HCICore, ReplaySocket, filename=args.replay)
connection_methods = [HCICore(log_level=log_level, data_directory=data_directory, replay=True)]
elif args.device == "adb_replay":
hook(ADBCore, ReplaySocket, filename=args.replay)
connection_methods = [ADBCore(log_level=log_level, data_directory=data_directory, replay=True)]
elif args.device == "ios_replay":
raise NotImplementedError("ios replay is not implemented yet")
else:
raise ValueError("--device is required with --replay and has to be one of {}".format(replay_devices))
elif args.ios_device:
from .ioscore import iOSCore
connection_methods = [iOSCore(args.ios_device, log_level=log_level, data_directory=data_directory)]
elif args.testdevice:
from .testcore import testCore
connection_methods = [testCore(log_level=log_level, data_directory=data_directory)]
elif platform == "darwin":
from macoscore import macOSCore
from .macoscore import macOSCore
connection_methods = [
macOSCore(log_level=log_level, data_directory=data_directory),
macOSCore(log_level=log_level, data_directory=data_directory, replay=(args.replay and args.device == 'mac')),
ADBCore(log_level=log_level, data_directory=data_directory)]
if args.trace:
hook(macOSCore, HookClass)
elif args.save:
hook(macOSCore, TraceToFileHook, filename=args.save)
else:
connection_methods = [
ADBCore(log_level=log_level, data_directory=data_directory, serial=args.serialsu),
HCICore(log_level=log_level, data_directory=data_directory)]
devices = []
devices = [] # type: List[DeviceTuple]
for connection_method in connection_methods:
devices.extend(connection_method.device_list())
device = None # type: Optional[DeviceTuple]
if len(devices) > 0:
if len(devices) == 1:
if args.replay:
# There should only be one device that was created when --replay was passed
device = devices[0]
elif args.device:
matching_devices = [ dev for dev in devices if dev[1] == args.device]
if len(matching_devices) > 1:
pwnlib.log.critical("Found multiple matching devices")
exit(-1)
elif len(matching_devices) == 1:
pwnlib.log.info("Found device is: {}".format(matching_devices[0]))
device = matching_devices[0]
else:
pwnlib.log.critical("No matching devices found")
exit(-1)
elif len(devices) == 1:
device = devices[0]
else:
i = options('Please specify device:', [d[2] for d in devices], 0)
i = pwnlib.options('Please specify device:', [d[2] for d in devices], 0)
device = devices[i]
# Setup device
@@ -151,29 +241,31 @@ def internalblue_cli():
# Restore readline history:
if os.path.exists(reference.data_directory + "/" + HISTFILE):
readline_history = read(reference.data_directory + "/" + HISTFILE)
term.readline.history = readline_history.split('\n')
readline_history = pwnlib.read(reference.data_directory + "/" + HISTFILE)
pwnlib.term.readline.history = readline_history.split(b'\n')
# Connect to device
if not reference.connect():
log.critical("No connection to target device.")
pwnlib.log.critical("No connection to target device.")
exit(-1)
# Enter command loop (runs until user quits)
commandLoop(reference)
pwnlib.log.info("Starting commandLoop for reference {}".format(reference))
commandLoop(reference, init_commands=args.commands)
# shutdown connection
reference.shutdown()
# Save readline history:
f = open(reference.data_directory + "/" + HISTFILE, "w")
f.write("\n".join(term.readline.history))
f.close()
# TODO: - This causes issues, have to fix ASAP
# f = open(reference.data_directory + "/" + HISTFILE, "w")
# f.write("\n".join(term.readline.history))
# f.close()
# Cleanup
log.info("Goodbye")
pwnlib.log.info("Goodbye")
if __name__ == "__main__":
internalblue_cli()
internalblue_cli(sys.argv[1:])
+95 -51
View File
@@ -23,7 +23,13 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from pwn import *
from __future__ import print_function
import re
from builtins import str
from builtins import hex
from builtins import range
from builtins import object
import os
import sys
import inspect
@@ -36,7 +42,27 @@ import time
import select
import json
from pwnlib.context import context
from pwnlib.asm import disasm, asm
from pwnlib.exception import PwnlibException
from pwnlib.ui import yesno
from pwnlib.util.fiddling import isprint
from internalblue.utils.pwnlib_wrapper import log, flat, read, p8, p32, u32, p16
from internalblue.utils import bytes_to_hex
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple, Type
if TYPE_CHECKING:
from internalblue.core import InternalBlue
from internalblue.hci import HCI
from internalblue import Record, BluetoothAddress, Address
except:
pass
def getCmdList():
# type: () -> List[Type['Cmd']]
""" Returns a list of all commands which are defined in this cmds.py file.
This is done by searching for all subclasses of Cmd
"""
@@ -44,6 +70,7 @@ def getCmdList():
if inspect.isclass(obj) and issubclass(obj, Cmd)][1:]
def findCmd(keyword):
# type: (str) -> Optional[Type['Cmd']]
""" Find and return a Cmd subclass for a given keyword.
"""
command_list = getCmdList()
@@ -61,11 +88,13 @@ def auto_int(x):
return int(x, 0)
def bt_addr_to_str(bt_addr):
# type: (BluetoothAddress) -> str
""" Convert a Bluetooth address (6 bytes) into a human readable format.
"""
return ":".join([b.encode("hex") for b in bt_addr])
return ":".join(format(x, '02x') for x in bytearray(bt_addr))
def parse_bt_addr(bt_addr):
# type: (Any) -> Optional[BluetoothAddress]
""" Convert Bluetooth address argument and check lengths.
"""
addr = bt_addr
@@ -86,17 +115,18 @@ def parse_bt_addr(bt_addr):
return addr
class Cmd:
class Cmd(object):
""" This class is the superclass of a CLI command. Every CLI command
must be defined as subclass of Cmd. The subclass must define the
'keywords' list as member variable. The actual implementation of the
command should be located in the work() method.
"""
keywords = []
keywords = [] # type: List[str]
memory_image = None
memory_image = None # type: Optional[bytes]
def __init__(self, cmdline, internalblue):
# type: (str, InternalBlue) -> None
self.cmdline = cmdline
self.internalblue = internalblue
self.memory_image_template_filename = internalblue.data_directory + "/memdump__template.bin"
@@ -105,23 +135,28 @@ class Cmd:
self.internalblue.fw.__name__[6:12] + "_template.bin"
def __str__(self):
# type: () -> str
return self.cmdline
def work(self):
# type: () -> bool
return True
def abort_cmd(self):
# type: () -> None
self.aborted = True
if hasattr(self, 'progress_log'):
self.progress_log.failure("Command aborted")
def getArgs(self):
# type: () -> Any
try:
return self.parser.parse_args(self.cmdline.split(' ')[1:])
except SystemExit:
return None
def isAddressInSections(self, address, length=0, sectiontype=""):
# type: (int, int, str) -> bool
if not self.internalblue.fw:
return False
@@ -137,12 +172,15 @@ class Cmd:
return False
def readMem(self, address, length, progress_log=None, bytes_done=0, bytes_total=0):
# type: (Address, int, Optional[Any], int, int) -> Optional[bytes]
return self.internalblue.readMem(address, length, progress_log, bytes_done, bytes_total)
def writeMem(self, address, data, progress_log=None, bytes_done=0, bytes_total=0):
# type: (Address, bytes, Optional[Any], int, int) -> bool
return self.internalblue.writeMem(address, data, progress_log, bytes_done, bytes_total)
def initMemoryImage(self):
# type: () -> None
"""
Initially read out a chip's memory, all sections (RAM+ROM).
:return:
@@ -158,7 +196,7 @@ class Cmd:
dumped_sections[section.start_addr] = self.readMem(section.start_addr, section.size(), self.progress_log, bytes_done, bytes_total)
bytes_done += section.size()
self.progress_log.success("Received Data: complete")
Cmd.memory_image = fit(dumped_sections, filler='\x00')
Cmd.memory_image = flat(dumped_sections, filler='\x00')
f = open(self.memory_image_template_filename, 'wb')
f.write(Cmd.memory_image)
f.close()
@@ -168,6 +206,7 @@ class Cmd:
self.refreshMemoryImage()
def refreshMemoryImage(self):
# type: () -> None
"""
Update an existing memory dump, only RAM sections.
:return:
@@ -178,12 +217,13 @@ class Cmd:
for section in self.internalblue.fw.SECTIONS:
if not section.is_rom:
sectiondump = self.readMem(section.start_addr, section.size(), self.progress_log, bytes_done, bytes_total)
if sectiondump:
if sectiondump and Cmd.memory_image:
Cmd.memory_image = Cmd.memory_image[0:section.start_addr] + sectiondump + Cmd.memory_image[section.end_addr:]
bytes_done += section.size()
self.progress_log.success("Received Data: complete")
def getMemoryImage(self, refresh=False):
# type: (bool) -> Any
if Cmd.memory_image is None:
self.initMemoryImage()
elif refresh:
@@ -254,7 +294,8 @@ class CmdLogLevel(Cmd):
log_levels = ['CRITICAL', 'DEBUG', 'ERROR', 'INFO', 'NOTSET', 'WARN', 'WARNING']
for keyword in list(keywords):
keywords.extend(['%s %s' % (keyword, log_level) for log_level in log_levels])
for log_level in log_levels:
keywords.append('%s %s' % (keyword, log_level))
parser = argparse.ArgumentParser(prog=keywords[0],
description=description,
@@ -286,7 +327,7 @@ class CmdMonitor(Cmd):
parser.add_argument("command",
help="One of: start, stop, kill")
class MonitorController:
class MonitorController(object):
instance = None
@staticmethod
@@ -296,7 +337,7 @@ class CmdMonitor(Cmd):
CmdMonitor.MonitorController.instance = CmdMonitor.MonitorController.__MonitorController(internalblue, 0xC9)
return CmdMonitor.MonitorController.instance
class __MonitorController:
class __MonitorController(object):
def __init__(self, internalblue, pcap_data_link_type):
self.internalblue = internalblue
self.running = False
@@ -411,6 +452,7 @@ class CmdMonitor(Cmd):
self.wireshark_process = None
def adbhciCallback(self, record):
# type: (Record) -> None
hcipkt, orig_len, inc_len, flags, drops, recvtime = record
dummy = "\x00\x00\x00" # TODO: Figure out purpose of these fields
@@ -503,6 +545,7 @@ class CmdDumpMem(Cmd):
help="Only dump the two RAM sections.")
parser.add_argument("--file", "-f", default="memdump.bin",
help="Filename of memory dump (default: %(default)s)")
parser.add_argument("--overwrite", action='store_true')
def work(self):
args = self.getArgs()
@@ -514,10 +557,10 @@ class CmdDumpMem(Cmd):
bytes_total = sum([s.size() for s in self.internalblue.fw.SECTIONS if s.is_ram])
bytes_done = 0
self.progress_log = log.progress("Downloading RAM sections...")
for section in filter(lambda s: s.is_ram, self.internalblue.fw.SECTIONS):
for section in [s for s in self.internalblue.fw.SECTIONS if s.is_ram]:
filename = args.file + "_" + hex(section.start_addr)
if os.path.exists(filename):
if not yesno("Update '%s'?" % filename):
if not (args.overwrite or yesno("Update '%s'?" % filename)):
log.info("Skipping section @%s" % hex(section.start_addr))
bytes_done += section.size()
continue
@@ -531,7 +574,7 @@ class CmdDumpMem(Cmd):
# Get complete memory image
if os.path.exists(args.file):
if not yesno("Update '%s'?" % os.path.abspath(args.file)):
if not (args.overwrite or yesno("Update '%s'?" % os.path.abspath(args.file))):
return False
dump = self.getMemoryImage(refresh=not args.norefresh)
@@ -567,10 +610,10 @@ class CmdSearchMem(Cmd):
highlight = pattern
if args.hex:
try:
pattern = pattern.decode('hex')
pattern = bytearray.fromhex(pattern)
highlight = pattern
except TypeError as e:
log.warn("Search pattern cannot be converted to hexstring: " + str(e))
log.warn("Search pattern cannot be converted to bytestring: " + str(e))
return False
elif args.address:
pattern = p32(int(pattern, 16))
@@ -619,7 +662,7 @@ class CmdHexdump(Cmd):
if dump == None:
return False
log.hexdump(dump, begin=args.address)
log.hexdump(bytes(dump), begin=args.address)
return True
class CmdTelescope(Cmd):
@@ -734,9 +777,9 @@ class CmdWriteMem(Cmd):
data = ' '.join(args.data)
if args.hex:
try:
data = data.decode('hex')
data = bytearray.fromhex(data)
except TypeError as e:
log.warn("Data string cannot be converted to hexstring: " + str(e))
log.warn("Hex string cannot be converted to bytestring: " + str(e))
return False
elif args.int:
data = p32(auto_int(data))
@@ -919,14 +962,14 @@ class CmdSendHciCmd(Cmd):
log.info("cmdcode needs to be in the range of 0x0000 - 0xffff")
return False
data = ''
data = b''
for data_part in args.data:
if data_part[0:2] == "0x":
data += p32(auto_int(data_part))
else:
data += data_part.decode('hex')
self.internalblue.sendHciCommand(args.cmdcode, data)
return self.internalblue.sendHciCommand(args.cmdcode, data)
return True
@@ -1041,9 +1084,9 @@ class CmdSendLmp(Cmd):
connection = self.internalblue.readConnectionInformation(i+1)
if connection == None:
continue
if connection["connection_handle"] != 0 and connection["remote_address"] != b'\x00\x00\x00\x00\x00\x00':
args.conn_handle = connection["connection_handle"]
is_master = connection["master_of_connection"]
if connection.connection_handle != 0 and connection.remote_address != b'\x00\x00\x00\x00\x00\x00':
args.conn_handle = connection.connection_handle
is_master = connection.master_of_connection
break
# if still not set, typical connection handles seem to be 0x0b...0x0d
@@ -1144,21 +1187,21 @@ class CmdInfo(Cmd):
continue
log.info("### | Connection ---%02d--- ###" % i)
log.info(" - Number: %d" % connection["connection_number"])
log.info(" - Remote BT address: %s" % bt_addr_to_str(connection["remote_address"]))
log.info(" - Remote BT name: %08X" % connection["remote_name_address"])
log.info(" - Master of Conn.: %s" % str(connection["master_of_connection"]))
log.info(" - Conn. Handle: 0x%X" % connection["connection_handle"])
log.info(" - Public RAND: %s" % connection["public_rand"].encode('hex'))
#log.info(" - PIN: %s" % connection["pin"].encode('hex'))
#log.info(" - BT addr for key: %s" % bt_addr_to_str(connection["bt_addr_for_key"]))
log.info(" - Effective Key Len: %d byte (%d bit)" % (connection["effective_key_len"], 8*connection["effective_key_len"]))
log.info(" - Link Key: %s" % connection["link_key"].encode('hex'))
log.info(" - LMP Features: %s" % connection["extended_lmp_feat"].encode('hex'))
log.info(" - Host Supported F: %s" % connection["host_supported_feat"].encode('hex'))
log.info(" - TX Power (dBm): %d" % connection["tx_pwr_lvl_dBm"])
log.info(" - Array Index: %s" % connection["id"].encode('hex'))
print
log.info(" - Number: %d" % connection.connection_number)
log.info(" - Remote BT address: %s" % bt_addr_to_str(connection.remote_address))
log.info(" - Remote BT name: %08X" % connection.remote_name_address)
log.info(" - Master of Conn.: %s" % str(connection.master_of_connection))
log.info(" - Conn. Handle: 0x%X" % connection.connection_handle)
log.info(" - Public RAND: %s" % bytes_to_hex(connection.public_rand))
#log.info(" - PIN: %s" % bytes_to_hex(connection.pin)
#log.info(" - BT addr for key: %s" % bt_addr_to_str(connection.bt_addr_for_key))
log.info(" - Effective Key Len: %d byte (%d bit)" % (connection.effective_key_len, 8*connection["effective_key_len"]))
log.info(" - Link Key: %s" % bytes_to_hex(connection.link_key))
log.info(" - LMP Features: %s" % bytes_to_hex(connection.extended_lmp_feat))
log.info(" - Host Supported F: %s" % bytes_to_hex(connection.host_supported_feat))
log.info(" - TX Power (dBm): %d" % connection.tx_pwr_lvl_dBm)
log.info(" - Array Index: %s" % bytes_to_hex(connection.id))
print()
return True
def infoDevice(self, args):
@@ -1167,14 +1210,14 @@ class CmdInfo(Cmd):
log.warn(" '%s' not in fw.py. FEATURE NOT SUPPORTED!" % const)
return False
bt_addr = self.readMem(self.internalblue.fw.BD_ADDR, 6)[::-1]
bt_addr_str = ":".join([b.encode("hex") for b in bt_addr])
bt_addr_str = bt_addr_to_str(bt_addr)
device_name = self.readMem(self.internalblue.fw.DEVICE_NAME, 258)
device_name_len = u8(device_name[0])-1
device_name_len = device_name[0]-1
device_name = device_name[2:2+device_name_len]
adb_serial = context.device
log.info("### | Device ###")
log.info(" - Name: %s" % device_name)
log.info(" - Name: %s" % device_name.decode('utf-8'))
log.info(" - ADB Serial: %s" % adb_serial)
log.info(" - Address: %s" % bt_addr_str)
return True
@@ -1196,7 +1239,7 @@ class CmdInfo(Cmd):
code = disasm(table_values[i],vma=table_addresses[i],byte=False,offset=False)
code = code.replace(" ", " ").replace("\n", "; ")
log.info("[%03d] 0x%08X: %s (%s)" % (i, table_addresses[i],
table_values[i].encode('hex'),
bytes_to_hex(table_values[i]),
code))
return True
@@ -1274,7 +1317,7 @@ class CmdInfo(Cmd):
# Print Buffer Details
buffer_size = bloc_for_details["buffer_size"] + 4
for buffer_address, buffer_hdr in bloc_for_details["buffer_headers"].iteritems():
for buffer_address, buffer_hdr in bloc_for_details["buffer_headers"].items():
progress_log.status("Dumping buffers from BLOC[%d]: 0x%06X" % (bloc_for_details["index"], buffer_address))
# Buffer in use!
if buffer_hdr == bloc_for_details["address"]:
@@ -1296,7 +1339,7 @@ class CmdInfo(Cmd):
log.info("[ Idx ] @Queue-Addr Queue-Name Items/Free/Capacity Item-Size Buffer")
log.info("------------------------------------------------------------______--------------")
for queue in queuelist:
for queue in [vars(element) for element in queuelist]:
# TODO: waitlist
log.info(("QUEU[{index:2d}] @ 0x{address:06X}: {name:21s} {available_items:2d} /"
" {free_slots:2d} / {capacity:2d} {item_size:2d} Bytes 0x{queue_buf_start:06X}").format(**queue))
@@ -1330,7 +1373,7 @@ class CmdInfo(Cmd):
if args.type in subcommands:
return subcommands[args.type](args.args)
else:
log.warn("Unkown type: %s\nKnown types: %s" % (args.type, subcommands.keys()))
log.warn("Unkown type: %s\nKnown types: %s" % (args.type, list(subcommands.keys())))
return False
@@ -1454,7 +1497,8 @@ class CmdCustom(Cmd):
actions = ['list', 'add', 'run', 'remove']
for keyword in list(keywords):
keywords.extend(['%s %s' % (keyword, action) for action in actions])
for action in actions:
keywords.append('%s %s' % (keyword, action))
parser = argparse.ArgumentParser(prog=keywords[0],
description=description,
@@ -1489,7 +1533,7 @@ class CmdCustom(Cmd):
return True
if args.do == 'list':
custom_cmds= ["\t%s\t\t%s\n" % (k, v) for k, v in sorted(CmdCustom.custom_commands.iteritems())]
custom_cmds= ["\t%s\t\t%s\n" % (k, v) for k, v in sorted(CmdCustom.custom_commands.items())]
log.info("Custom commands:\n%s" % ''.join(custom_cmds))
return True
@@ -1574,7 +1618,7 @@ class CmdReadAfhChannelMap(Cmd):
if connection == None:
continue
else:
self.readafh(connection["connection_handle"])
self.readafh(connection.connection_handle)
return True
# if not set but connection struct unknown, typical connection handles seem to be 0x0b...0x0d
else:
@@ -1587,15 +1631,15 @@ class CmdReadAfhChannelMap(Cmd):
"""
response = self.internalblue.sendHciCommand(0x1406, p16(handle))
if len(response) < 17 or response[8:] == '\x00'*9:
if len(response) < 17 or response[8:] == b'\x00'*9:
log.info("Connection 0x%04x is not established." % handle)
return False
log.info("Connection Handle: 0x%04x" % handle)
log.info("AFH Enabled: %s" % bool(response[7] != '\x00'))
log.info("AFH Enabled: %s" % bool(response[7] != 0))
channels = ""
for c in response[8:]:
bits = format(ord(c), '08b')
bits = format(c, '08b')
for b in bits:
if b == "1":
channels = channels + " *"
+183 -116
View File
@@ -25,20 +25,56 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from __future__ import division
import socket
import struct
from future import standard_library
import pwnlib
from pwnlib.asm import asm
from pwnlib.exception import PwnlibException
from pwnlib.util.fiddling import bits, unbits
from .utils.pwnlib_wrapper import p16, p8, u32, u16, p32, u8
standard_library.install_aliases()
from builtins import hex
from builtins import str
from builtins import range
from builtins import object
from past.utils import old_div
from abc import ABCMeta, abstractmethod
from pwn import *
from fw.fw import Firmware
from .fw.fw import Firmware
import datetime
import time
import Queue
import hci
import queue as queue2k
from . import hci
from .objects.queue_element import QueueElement
from .objects.connection_information import ConnectionInformation
from future.utils import with_metaclass
from internalblue.utils import bytes_to_hex
from internalblue.utils.pwnlib_wrapper import log, context, flat
class InternalBlue:
__metaclass__ = ABCMeta
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple, Union, NewType, Callable
from internalblue import Address, Record, Task, HCI_CMD, FilterFunction, ConnectionNumber, ConnectionDict, \
ConnectionIndex, BluetoothAddress, HeapInformation, QueueInformation, Opcode
from internalblue.hci import HCI
from . import DeviceTuple
if TYPE_CHECKING:
pass
except:
pass
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory="."):
#import logging
#log = logging.getLogger(__name__)
class InternalBlue(with_metaclass(ABCMeta, object)):
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory=".", replay=False):
# type: (int, str, str, bool, str, bool) -> None
context.log_level = log_level
context.log_file = data_directory + '/_internalblue.log'
context.arch = "thumb"
@@ -48,11 +84,11 @@ class InternalBlue:
self.data_directory = data_directory
self.s_inject = None # This is the TCP socket to the HCI inject port
self.s_snoop = None # This is the TCP socket to the HCI snoop port
self.s_inject = None #type: socket.socket # This is the TCP socket to the HCI inject port
self.s_snoop = None #type: socket.socket # This is the TCP socket to the HCI snoop port
# If btsnooplog_filename is set, write all incomming HCI packets to a file (can be viewed in wireshark for debugging)
if btsnooplog_filename != None:
if btsnooplog_filename is not None:
self.write_btsnooplog = True
self.btsnooplog_file = open(self.data_directory + "/" + btsnooplog_filename, "wb")
else:
@@ -78,12 +114,12 @@ class InternalBlue:
# firmware (the response is recognized with the help of the filter function).
# Once the response arrived, it puts the response into the response_queue from
# the tuple. See sendH4() and sendHciCommand().
self.sendQueue = Queue.Queue(queue_size)
self.sendQueue = queue2k.Queue(queue_size) # type: Queue.Queue[Task]
self.recvThread = None # The thread which is responsible for the HCI snoop socket
self.sendThread = None # The thread which is responsible for the HCI inject socket
self.tracepoints = [] # A list of currently active tracepoints
self.tracepoints = [] # A list of currently active tracepoints
# The list contains tuples:
# [0] target address
# [1] address of the hook code
@@ -103,7 +139,7 @@ class InternalBlue:
# filter_function will be called for each packet that is received and only if it returns
# True, the packet will be put into the queue. The filter_function can be None in order
# to put all packets into the queue.
self.registeredHciRecvQueues = []
self.registeredHciRecvQueues = [] # type: List[Tuple[Queue.Queue[Record], FilterFunction]]
self.exit_requested = False # Will be set to true when the framework wants to shut down (e.g. on error or user exit)
self.running = False # 'running' is True once the connection to the HCI sockets is established
@@ -120,6 +156,9 @@ class InternalBlue:
self.registerHciCallback(self.connectionStatusCallback)
self.registerHciCallback(self.coexStatusCallback)
# If the --replay flag was used and a chip is spoofed.
self.replay = replay
def check_binutils(self, fix=True):
"""
Test if ARM binutils is in path so that asm and disasm (provided by
@@ -162,6 +201,7 @@ class InternalBlue:
return False
def _parse_time(self, time):
# type: (Any) -> datetime.datetime
"""
Taken from: https://github.com/joekickass/python-btsnoop
@@ -175,12 +215,14 @@ class InternalBlue:
time_betw_0_and_2000_ad = int("0x00E03AB44A676000", 16)
time_since_2000_epoch = datetime.timedelta(microseconds=time) - datetime.timedelta(microseconds=time_betw_0_and_2000_ad)
return datetime.datetime(2000, 1, 1) + time_since_2000_epoch
@abstractmethod
def _recvThreadFunc(self):
# type: () -> None
pass
def _sendThreadFunc(self):
# type: () -> None
"""
This is the run-function of the sendThread. It polls the sendQueue for new 'send tasks'
and executes them (sends H4 commands to the chip and returns the response).
@@ -203,7 +245,7 @@ class InternalBlue:
# Wait for 'send task' in send queue
try:
task = self.sendQueue.get(timeout=0.5)
except Queue.Empty:
except queue2k.Empty:
continue
# Extract the components of the task
@@ -255,15 +297,17 @@ class InternalBlue:
# if the caller expects a response: register a queue to receive the response
if queue != None and filter_function != None:
recvQueue = Queue.Queue(1)
recvQueue = queue2k.Queue(1)
self.registerHciRecvQueue(recvQueue, filter_function)
# Send command to the chip using s_inject socket
try:
log.debug("_sendThreadFunc: Send: " + str(out.encode('hex')))
log.debug("_sendThreadFunc: Send: " + bytes_to_hex(out))
self.s_inject.send(out)
except:
log.warn("_sendThreadFunc: Sending to socket failed, reestablishing connection.\nWith HCI sockets, some HCI commands require root!")
except socket.error:
pass
except socket.error as e:
log.warn("_sendThreadFunc: Sending to socket failed with {}, reestablishing connection.\nWith HCI sockets, some HCI commands require root!".format(e))
# socket are terminated by hcicore..
self._teardownSockets()
self._setupSockets()
@@ -275,7 +319,7 @@ class InternalBlue:
record = recvQueue.get(timeout=2)
hcipkt = record[0]
data = hcipkt.data
except Queue.Empty:
except queue2k.Empty:
log.warn("_sendThreadFunc: No response from the firmware.")
data = None
self.unregisterHciRecvQueue(recvQueue)
@@ -287,6 +331,7 @@ class InternalBlue:
log.debug("Send Thread terminated.")
def _tracepointHciCallbackFunction(self, record):
# type: (Record) -> None
hcipkt = record[0] # get HCI Event packet
timestamp = record[5] # get timestamp
@@ -309,7 +354,7 @@ class InternalBlue:
registers += "r10: 0x%08x r11: 0x%08x r12: 0x%08x\n" % \
tuple(self.tracepoint_registers[13:16])
log.info("Tracepoint 0x%x was hit and deactivated:\n" % pc + registers)
filename = self.data_directory + "/" + "internalblue_tracepoint_registers_%s.bin" % datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
log.info("Captured Registers for Tracepoint to %s" % filename)
f = open(filename, "w")
@@ -333,12 +378,12 @@ class InternalBlue:
if self.tracepoint_memdump_address == None:
self.tracepoint_memdump_address = dump_address
normalized_address = dump_address - self.tracepoint_memdump_address
normalized_address = dump_address - self.tracepoint_memdump_address
self.tracepoint_memdump_parts[normalized_address] = data
# Check if this was the last packet
if len(self.tracepoint_memdump_parts) == self.fw.TRACEPOINT_RAM_DUMP_PKT_COUNT:
dump = fit(self.tracepoint_memdump_parts)
dump = flat(self.tracepoint_memdump_parts)
#TODO: use this to start qemu
filename = self.data_directory + "/" + "internalblue_tracepoint_0x%x_%s.bin" % (self.tracepoint_memdump_address, datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))
log.info("Captured Ram Dump for Tracepoint 0x%x to %s" % (self.tracepoint_memdump_address, filename))
@@ -348,6 +393,7 @@ class InternalBlue:
def addTracepoint(self, address):
# type: (Address) -> bool
# Check if constants are defined in fw.py
for const in ['TRACEPOINT_BODY_ASM_LOCATION', 'TRACEPOINT_BODY_ASM_SNIPPET',
'TRACEPOINT_HOOK_ASM', 'TRACEPOINT_HOOKS_LOCATION',
@@ -441,6 +487,7 @@ class InternalBlue:
return True
def deleteTracepoint(self, address):
# type: (Address) -> bool
if not self.check_running():
return False
@@ -460,6 +507,7 @@ class InternalBlue:
return True
def check_running(self):
# type: () -> bool
"""
Check if the framework is running (i.e. the sockets are connected,
the recv and send threads are running and exit_requested is not True)
@@ -475,10 +523,11 @@ class InternalBlue:
@abstractmethod
def device_list(self):
# type: () -> List[DeviceTuple]
pass
def connect(self):
# type: () -> bool
if self.exit_requested:
self.shutdown()
@@ -510,7 +559,7 @@ class InternalBlue:
# register hci callback:
self.registerHciCallback(self.stackDumpReceiver.recvPacket)
if not self.initialize_fimware():
log.warn("connect: Failed to initialize firmware!")
return False
@@ -522,16 +571,17 @@ class InternalBlue:
@abstractmethod
def local_connect(self):
return True
def initialize_fimware(self):
# type: () -> bool
"""
Checks if we are running on a Broadcom chip and loads available firmware information based
on LMP subversion.
"""
# send Read_Local_Version_Information
version = self.sendHciCommand(0x1001, '')
version = self.sendHciCommand(0x1001, ''.encode('utf-8'))
if not version or len(version) < 11:
log.warn("""initialize_fimware: Failed to send a HCI command to the Bluetooth driver.
adb: Check if you installed a custom bluetooth.default.so properly on your
@@ -540,27 +590,28 @@ class InternalBlue:
return False
# Broadcom uses 0x000f as vendor ID, Cypress 0x0131
vendor = (u8(version[9]) << 8) + u8(version[8])
vendor = (version[9] << 8) + version[8]
if vendor != 0xf and vendor != 0x131:
log.critical("Not running on a Broadcom or Cypress chip!")
return False
else:
subversion = (u8(version[11]) << 8) + u8(version[10])
subversion = (version[11] << 8) + version[10]
iOS = False
if self.__class__.__name__ == "iOSCore":
iOS = True
self.fw = Firmware(subversion, iOS).firmware
# Safe to turn diagnostic logging on, it just gets a timeout if the Android
# driver was recompiled with other flags but without applying a proper patch.
log.info("Try to enable debugging on H4 (warning if not supported)...")
self.enableBroadcomDiagnosticLogging(True)
return True
def shutdown(self):
# type: () -> None
"""
Shutdown the framework by stopping the send and recv threads. Socket shutdown
also terminates port forwarding if adb is used.
@@ -593,6 +644,7 @@ class InternalBlue:
log.info("Shutdown complete.")
def registerHciCallback(self, callback):
# type: (Callable[[Record], None ]) -> None
"""
Add a new callback function to self.registeredHciCallbacks.
The function will be called every time the recvThread receives
@@ -612,6 +664,7 @@ class InternalBlue:
self.registeredHciCallbacks.append(callback)
def unregisterHciCallback(self, callback):
# type: (Callable[[Tuple[HCI, int, int, int, Any, datetime.datetime]], None ]) -> None
"""
Remove a callback function from self.registeredHciCallbacks.
"""
@@ -622,6 +675,7 @@ class InternalBlue:
log.warn("registerHciCallback: no such callback is registered!")
def registerHciRecvQueue(self, queue, filter_function=None):
# type: (Queue.Queue[Record], FilterFunction) -> None
"""
Add a new queue to self.registeredHciRecvQueues.
The queue will be filled by the recvThread every time the thread receives
@@ -644,6 +698,7 @@ class InternalBlue:
self.registeredHciRecvQueues.append((queue, filter_function))
def unregisterHciRecvQueue(self, queue):
# type: (Queue.Queue[Tuple[HCI, int, int, int, Any, datetime]]) -> None
"""
Remove a queue from self.registeredHciRecvQueues.
"""
@@ -655,6 +710,7 @@ class InternalBlue:
log.warn("registerHciRecvQueue: no such queue is registered!")
def sendHciCommand(self, opcode, data, timeout=3):
# type: (Opcode, bytes, int) -> Optional[bytearray]
"""
Send an arbitrary HCI command packet by pushing a send-task into the
sendQueue. This function blocks until the response is received
@@ -666,7 +722,7 @@ class InternalBlue:
# return this instead of the Command Complete Event (which will
# follow later and will be ignored). This should be fixed..
queue = Queue.Queue(1)
queue = queue2k.Queue(1)
# standard HCI command structure
payload = p16(opcode) + p8(len(data)) + data
@@ -674,6 +730,7 @@ class InternalBlue:
# define a filter function which recognizes the response (command complete
# or command status event).
def recvFilterFunction(record):
# type: (Record) -> bool
hcipkt = record[0]
log.debug("sendHciCommand.recvFilterFunction: got response")
@@ -695,14 +752,19 @@ class InternalBlue:
timeout=timeout)
ret = queue.get(timeout=timeout)
return ret
except Queue.Empty:
except queue2k.Empty:
log.warn("sendHciCommand: waiting for response timed out!")
# If there was no response because the Trace Replay Hook throw an assert it will be in this attribute.
# Raise this so the main thread doesn't ignore this and it will be caught by any testing framework
if hasattr(self, 'test_failed'):
raise self.test_failed
return None
except Queue.Full:
except queue2k.Full:
log.warn("sendHciCommand: send queue is full!")
return None
def sendH4(self, h4type, data, timeout=2):
# type: (HCI_CMD, bytes, int) -> bool
"""
Send an arbitrary H4 packet by pushing a send-task into the
sendQueue. This function does not wait for a response! If you
@@ -714,11 +776,12 @@ class InternalBlue:
try:
self.sendQueue.put((h4type, data, None, None), timeout=timeout)
return True
except Queue.Full:
except queue2k.Full:
log.warn("sendH4: send queue is full!")
return False
def recvPacket(self, timeout=None):
# type: (Optional[int]) -> Optional[Record]
"""
This function polls the recvQueue for the next available HCI
packet and returns it. The function checks whether it is called
@@ -731,7 +794,7 @@ class InternalBlue:
a blocking manner. Consider using the registerHciCallback()
functionality as an alternative which works asynchronously.
"""
log.debug("recvPacket: called")
if not self.check_running():
@@ -739,10 +802,11 @@ class InternalBlue:
try:
return self.recvQueue.get(timeout=timeout)
except Queue.Empty:
except queue2k.Empty:
return None
def readMem(self, address, length, progress_log=None, bytes_done=0, bytes_total=0):
# type: (int, int, Optional[Any], int, int) -> Optional[bytes]
"""
Reads <length> bytes from the memory space of the firmware at the given
address. Reading from unmapped memory or certain memory-mapped-IO areas
@@ -761,9 +825,9 @@ class InternalBlue:
read_addr = address # read_addr is the address of the next Read_RAM HCI command
byte_counter = 0 # tracks the number of received bytes
outbuffer = '' # buffer which stores all accumulated data read from the chip
outbuffer = bytearray() # buffer which stores all accumulated data read from the chip
if bytes_total == 0: # If no total bytes where given just use length
bytes_total = length
bytes_total = length
retry = 3 # Retry on failures
while read_addr < address+length: # Send HCI Read_RAM commands until all data is received
# Send hci frame
@@ -796,7 +860,7 @@ class InternalBlue:
log.debug("readMem: insufficient bytes returned, retrying...")
continue
status = ord(response[3])
status = response[3]
if status != 0:
# It is not yet reverse engineered what this byte means. For almost
# all memory addresses it will be 0. But for some it will be different,
@@ -812,7 +876,7 @@ class InternalBlue:
response_check = self.sendHciCommand(0xfc4d, p32(read_addr) + p8(blocksize))
if response != response_check:
log.debug("readMem: double checking response failed at 0x%x! retry..." % read_addr)
sleep(0.3)
time.sleep(0.3)
retry = retry - 1
continue
@@ -820,13 +884,14 @@ class InternalBlue:
read_addr += len(data)
byte_counter += len(data)
if(progress_log != None):
msg = "receiving data... %d / %d Bytes (%d%%)" % (bytes_done+byte_counter,
bytes_total, (bytes_done+byte_counter)*100/bytes_total)
msg = "receiving data... %d / %d Bytes (%d%%)" % (bytes_done+byte_counter,
bytes_total, old_div((bytes_done+byte_counter)*100,bytes_total))
progress_log.status(msg)
retry = 3 # this round worked, so we re-enable retries
return outbuffer
def readMemAligned(self, address, length, progress_log=None, bytes_done=0, bytes_total=0):
# type: (int, int, Optional[Any], int, int) -> Any
"""
This is an alternative to readMem() which enforces a strictly aligned access
to the memory that is read. This is needed for e.g. the memory-mapped-IO
@@ -862,8 +927,9 @@ class InternalBlue:
log.warn("readMemAligned: address (0x%x) must be 4-byte aligned!" % address)
return None
recvQueue = Queue.Queue(1)
recvQueue = queue2k.Queue(1)
def hciFilterFunction(record):
# type: (Record) -> bool
hcipkt = record[0]
if not issubclass(hcipkt.__class__, hci.HCI_Event):
return False
@@ -887,7 +953,7 @@ class InternalBlue:
blocksize = 244
# Customize the assembler snippet with the current read_addr and blocksize
code = asm(self.fw.READ_MEM_ALIGNED_ASM_SNIPPET % (blocksize, read_addr, blocksize/4), vma=self.fw.READ_MEM_ALIGNED_ASM_LOCATION, arch='thumb')
code = asm(self.fw.READ_MEM_ALIGNED_ASM_SNIPPET % (blocksize, read_addr, old_div(blocksize,4)), vma=self.fw.READ_MEM_ALIGNED_ASM_LOCATION, arch='thumb')
# Write snippet to the RAM (TODO: maybe backup and restore content of this area?)
self.writeMem(self.fw.READ_MEM_ALIGNED_ASM_LOCATION, code)
@@ -904,7 +970,7 @@ class InternalBlue:
# wait for the custom HCI event sent by the snippet:
try:
record = recvQueue.get(timeout=1)
except Queue.Empty:
except queue2k.Empty:
log.warn("readMemAligned: No response from assembler snippet.")
return None
@@ -914,14 +980,15 @@ class InternalBlue:
read_addr += len(data)
byte_counter += len(data)
if progress_log is not None:
msg = "receiving data... %d / %d Bytes (%d%%)" % (bytes_done+byte_counter,
bytes_total, (bytes_done+byte_counter)*100/bytes_total)
msg = "receiving data... %d / %d Bytes (%d%%)" % (bytes_done+byte_counter,
bytes_total, old_div((bytes_done+byte_counter)*100,bytes_total))
progress_log.status(msg)
self.unregisterHciRecvQueue(recvQueue)
return outbuffer
def writeMem(self, address, data, progress_log=None, bytes_done=0, bytes_total=0):
# type: (int, bytes, Optional[Any], int, int) -> Optional[bool]
"""
Writes the <data> to the memory space of the firmware at the given
address.
@@ -934,7 +1001,7 @@ class InternalBlue:
"""
log.debug("writeMem: writing to 0x%x" % address)
if not self.check_running():
return None
@@ -953,8 +1020,8 @@ class InternalBlue:
if(response == None):
log.warn("writeMem: Timeout while reading response, probably need to wait longer.")
return False
elif (response[3] != '\x00'):
log.warn("writeMem: Got error code %s in command complete event." % response[3].encode('hex'))
elif (response[3] != 0):
log.warn("writeMem: Got error code %s in command complete event." % bytes_to_hex(response[3]))
return False
write_addr += blocksize
byte_counter += blocksize
@@ -964,6 +1031,7 @@ class InternalBlue:
return True
def launchRam(self, address):
# type: (int) -> bool
"""
Executes a function at the specified address in the context of the HCI
handler thread. The function has to comply with the calling convention.
@@ -976,18 +1044,20 @@ class InternalBlue:
log.warn("Empty HCI response during launchRam, driver crashed due to invalid code or destination")
return False
if response[3] != '\x00':
log.warn("Got error code %x in command complete event." % u8(response[3]))
error_code = response[3]
if error_code != 0:
log.warn("Got error code %x in command complete event." % error_code)
return False
# Nexus 6P Bugfix
if 'LAUNCH_RAM_PAUSE' in dir(self.fw) and self.fw.LAUNCH_RAM_PAUSE:
log.debug("launchRam: Bugfix, sleeping %ds" % self.fw.LAUNCH_RAM_PAUSE)
time.sleep(self.fw.LAUNCH_RAM_PAUSE)
return True
def getPatchramState(self):
# type: () -> Union[bool, Tuple[List[Optional[int]], List[Union[Union[int, bytes, None], Any]], list]]
"""
Retrieves the current state of the patchram unit. The return value
is a tuple containing 3 lists which are indexed by the slot number:
@@ -1004,25 +1074,25 @@ class InternalBlue:
return False
slot_count = self.fw.PATCHRAM_NUMBER_OF_SLOTS
# On Nexus 5, ReadMemAligned is required, while Nexus 6P supports this memory area with ReadRAM
if self.fw.PATCHRAM_ALIGNED:
slot_dump = self.readMemAligned(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS, slot_count/4)
slot_dump = self.readMemAligned(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS, old_div(slot_count,4))
table_addr_dump = self.readMemAligned(self.fw.PATCHRAM_TARGET_TABLE_ADDRESS, slot_count*4)
else:
slot_dump = self.readMem(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS, slot_count/4)
slot_dump = self.readMem(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS, old_div(slot_count,4))
table_addr_dump = self.readMem(self.fw.PATCHRAM_TARGET_TABLE_ADDRESS, slot_count*4)
table_val_dump = self.readMem(self.fw.PATCHRAM_VALUE_TABLE_ADDRESS, slot_count*4)
table_addresses = []
table_values = []
slot_dwords = []
slot_bits = []
for dword in range(slot_count/32):
for dword in range(old_div(slot_count,32)):
slot_dwords.append(slot_dump[dword*32:(dword+1)*32])
for dword in slot_dwords:
slot_bits.extend(bits(dword[::-1])[::-1])
slot_bits.extend(bits(bytes(dword[::-1]))[::-1])
for i in range(slot_count):
if slot_bits[i]:
table_addresses.append(u32(table_addr_dump[i*4:i*4+4])<<2)
@@ -1033,6 +1103,7 @@ class InternalBlue:
return (table_addresses, table_values, slot_bits)
def patchRom(self, address, patch, slot=None):
# type: (int, Any, Optional[Any]) -> bool
"""
Patch a 4-byte value (DWORD) inside the ROM section of the firmware
(0x0 - 0x8FFFF) using the patchram mechanism. There are 128 available
@@ -1057,7 +1128,7 @@ class InternalBlue:
if len(patch) != 4:
log.warn("patchRom: patch (%s) must be a 32-bit dword!" % patch)
return False
log.debug("patchRom: applying patch 0x%x to address 0x%x" % (u32(patch), address))
alignment = address % 4
@@ -1107,13 +1178,14 @@ class InternalBlue:
# Enable patchram slot (enable bitfield starts at 0x310204)
# (We need to enable the slot by setting a bit in a multi-dword bitfield)
target_dword = int(slot / 32)
target_dword = int(old_div(slot, 32))
table_slots[slot] = 1
slot_dword = unbits(table_slots[target_dword*32:(target_dword+1)*32][::-1])[::-1]
self.writeMem(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS + target_dword*4, slot_dword)
return True
def disableRomPatch(self, address, slot=None):
# type: (int, Optional[int]) -> bool
"""
Disable a patchram slot (see also patchRom()). The slot can either be
specified by the target address (address that was patched) or by providing
@@ -1145,7 +1217,7 @@ class InternalBlue:
# Disable patchram slot (enable bitfield starts at 0x310204)
# (We need to disable the slot by clearing a bit in a multi-dword bitfield)
target_dword = int(slot / 32)
target_dword = int(old_div(slot, 32))
table_slots[slot] = 0
slot_dword = unbits(table_slots[target_dword*32:(target_dword+1)*32][::-1])[::-1]
self.writeMem(self.fw.PATCHRAM_ENABLED_BITMAP_ADDRESS + target_dword*4, slot_dword)
@@ -1156,6 +1228,7 @@ class InternalBlue:
return True
def readConnectionInformation(self, conn_number):
# type: (ConnectionNumber) -> Optional[ConnectionInformation]
"""
Reads and parses a connection struct based on the connection number.
Note: The connection number is different from the connection index!
@@ -1166,7 +1239,7 @@ class InternalBlue:
In the Nexus 5 firmware all connection numbers are simply the connection
index increased by 1.
The return value is a dictionary containing all information that could
The return value is a ConnectionInformation object containing all information that could
be parsed from the connection structure. If the connection struct at the
specified connection number is empty, the return value is None.
"""
@@ -1177,7 +1250,7 @@ class InternalBlue:
for const in ['CONNECTION_MAX', 'CONNECTION_ARRAY_ADDRESS', 'CONNECTION_STRUCT_LENGTH']:
if const not in dir(self.fw):
is_array = False
# Do we have a list implementation?
for const in ['CONNECTION_LIST_ADDRESS']:
if const not in dir(self.fw):
@@ -1201,26 +1274,13 @@ class InternalBlue:
if connection == b'\x00'*self.fw.CONNECTION_STRUCT_LENGTH:
return None
conn_dict = {}
conn_dict["connection_number"] = u32(connection[:4])
conn_dict["remote_address"] = connection[0x28:0x2E][::-1]
conn_dict["remote_name_address"] = u32(connection[0x4C:0x50])
conn_dict["master_of_connection"] = u32(connection[0x1C:0x20]) & 1<<15 == 0
conn_dict["connection_handle"] = u16(connection[0x64:0x66])
conn_dict["public_rand"] = connection[0x78:0x88]
#conn_dict["pin"] = connection[0x8C:0x92]
#conn_dict["bt_addr_for_key"] = connection[0x92:0x98][::-1]
effective_key_len = u8(connection[0xa7:0xa8])
conn_dict["effective_key_len"] = effective_key_len
conn_dict["link_key"] = connection[0x68:0x68+effective_key_len]
#new fields - TODO verify
conn_dict["tx_pwr_lvl_dBm"] = u8(connection[0x9c:0x9d]) - 127
conn_dict["extended_lmp_feat"] = connection[0x30:0x38] #standard p. 527
conn_dict["host_supported_feat"] = connection[0x38:0x40]
conn_dict["id"] = connection[0x0c:0x0d] #not sure if this is an id?
conn_dict = ConnectionInformation.from_connection_buffer(connection)
return conn_dict
def sendLmpPacket(self, opcode, payload='', is_master=True, conn_handle=0x0c, extended_op=False):
# type: (Opcode, Any, bool, ConnectionNumber, bool) -> bool
"""
Inject a LMP packet into a Bluetooth connection (i.e. send a LMP packet
to a remote device which is paired and connected with our local device).
@@ -1241,50 +1301,51 @@ class InternalBlue:
Returns True on success and False on failure.
"""
# Check the connection handle
# Range: 0x0000-0x0EFF (all other values reserved for future use)
if conn_handle < 0 or conn_handle > 0x0EFF:
log.warn("sendLmpPacket: connection handle out of bounds: %d" % conn_handle)
return False
# must be string...
if payload == None:
payload = ''
if ((not extended_op) and opcode > (0xff>>1)) or (extended_op and opcode > 0xff):
log.warn("sendLmpPacket: opcode out of range!")
return False
# Build the LMP packet
opcode_data = p8(opcode<<1 | (not is_master)) if not extended_op else p8(0x7F<<1 | (not is_master)) + p8(opcode)
# Nexus 5 (2012) simply takes any length as argument, but later withdraws bytes if too many were passed.
# Nexus 6P, Raspi 3+ and evaulation board (2014-2018) require a fixed 20 byte length parameter to be passed!
# -> 2 bytes connection handle, 1 byte length, which means 17 bytes for opcode and payload remaining
# sendlmp --data 11223344556677889900112233445566 01 -> actually works
# always pad to 17 data bytes...
data = opcode_data + payload + '\x00'*(17 - len(opcode_data) - len(payload))
if len(data) > 17:
log.warn("sendLmpPacket: Vendor specific HCI command only allows for 17 bytes LMP content.")
#log.info("packet: " + p16(conn_handle) + p8(len(data)) + data)
result = self.sendHciCommand(0xfc58, p16(conn_handle) + p8(len(payload + opcode_data)) + data)
if result == None:
log.warn("sendLmpPacket: did not get a result from firmware, maybe crashed internally?")
return False
result = u8(result[3])
if result != 0:
log.warn("sendLmpPacket: got error status 0x%02x" % result)
return False
return True
def fuzzLmp(self):
# type: ()-> bool
"""
Installs a patch inside the sendLmp HCI handler that allows sending arbitrary
LMP payloads. Afterwards, use sendLmpPacket as before.
@@ -1312,6 +1373,7 @@ class InternalBlue:
return True
def sendLmpPacketLegacy(self, conn_nr, opcode, payload, extended_op=False):
# type: (int, Opcode, bytes, bool) -> bool
"""
Inject a LMP packet into a Bluetooth connection (i.e. send a LMP packet
to a remote device which is paired and connected with our local device).
@@ -1348,8 +1410,8 @@ class InternalBlue:
# Prepare the assembler snippet by injecting the connection number
# and appending the LMP packet data.
asm_code = self.fw.SENDLMP_ASM_CODE % (conn_nr)
asm_code_with_data = asm_code + ''.join([".byte 0x%02x\n" % ord(x)
asm_code = self.fw.SENDLMP_ASM_CODE % (conn_nr) # type: str
asm_code_with_data = asm_code + ''.join([".byte 0x%02x\n" % ord(x)
for x in data.ljust(20, "\x00")])
# Assemble the snippet and write it to SENDLMP_CODE_BASE_ADDRESS
@@ -1364,6 +1426,7 @@ class InternalBlue:
return False
def sendLcpPacket(self, conn_idx, payload):
# type: (ConnectionIndex, bytes) -> bool
"""
Inject a LCP packet into a Bluetooth LE connection (i.e. send a LCP packet
to a remote device which is paired and connected with our local device).
@@ -1400,6 +1463,7 @@ class InternalBlue:
return False
def connectToRemoteDevice(self, bt_addr):
# type: (BluetoothAddress) -> None
"""
Send a HCI Connect Command to the firmware. This will setup
a connection (inserted into the connection structure) if the
@@ -1427,6 +1491,7 @@ class InternalBlue:
self.sendHciCommand(0x0405, bt_addr[::-1] + '\x00\x00\x00\x00\x00\x00\x01')
def connectToRemoteLEDevice(self, bt_addr, addr_type=0x00):
# type: (BluetoothAddress, int) -> None
"""
Send a HCI LE Create Connection Command to the firmware as
defined in the Bluetooth Core Specification 5.0 p. 1266.
@@ -1443,6 +1508,7 @@ class InternalBlue:
self.sendHciCommand(0x200d, '\x60\x00\x30\x00\x00' + p8(addr_type) + bt_addr[::-1] + '\x01\x18\x00\x28\x00\x00\x00\xd0\x07\x00\x00\x00\x00')
def connectionStatusCallback(self, record):
# type: (Record) -> None
"""
HCI Callback function to detect HCI Events related to
Create Connection
@@ -1475,6 +1541,7 @@ class InternalBlue:
log.info("[Disconnect Complete: Handle=0x%x]" % (conn_handle))
def coexStatusCallback(self, record):
# type: (Record) -> None
"""
Coexistence Callback Function
Interprets debug counters for coexistence with WiFi/LTE
@@ -1499,6 +1566,7 @@ class InternalBlue:
return
def readHeapInformation(self):
# type: () -> Optional[Union[HeapInformation, bool]]
"""
Traverses the double-linked list of BLOC structs and returns them as a
list of dictionaries. The dicts have the following fields:
@@ -1592,6 +1660,7 @@ class InternalBlue:
def readQueueInformation(self):
# type: () -> Optional[List[QueueElement]]
"""
Traverses the double-linked list of QUEUE structs and returns them as a
list of dictionaries. The dicts have the following fields:
@@ -1617,7 +1686,7 @@ class InternalBlue:
for const in ['QUEUE_HEAD']:
if const not in dir(self.fw):
log.warn("readQueueInformation: '%s' not in fw.py. FEATURE NOT SUPPORTED!" % const)
return False
return None
# Read address of first queue struct:
first_queue_struct_address = u32(self.readMem(self.fw.QUEUE_HEAD, 4))
@@ -1631,22 +1700,13 @@ class InternalBlue:
if queue_fields[0] != u32("UEUQ"):
log.warn("readQueueInformation: QUEUE double-linked list contains non-QUEU element. abort.")
return None
current_element = {}
current_element["index"] = index
current_element["address"] = current_queue_struct_address
current_element["item_size"] = queue_fields[2] * 4 # Item size is measured in dwords (4 Byte)
current_element["capacity"] = queue_fields[3]
current_element["available_items"] = queue_fields[4]
current_element["free_slots"] = queue_fields[5]
current_element["queue_buf_start"] = queue_fields[6]
current_element["queue_buf_end"] = queue_fields[7]
current_element["next_item"] = queue_fields[8]
current_element["next_free_slot"] = queue_fields[9]
current_element["thread_waitlist"] = queue_fields[10]
current_element["waitlist_length"] = queue_fields[11]
current_element["next"] = queue_fields[12]
current_element["prev"] = queue_fields[13]
current_element["name"] = self.fw.QUEUE_NAMES[index]
current_element = QueueElement(index, current_queue_struct_address, queue_fields[2] * 4,
queue_fields[3], queue_fields[4], queue_fields[5], queue_fields[6],
queue_fields[7], queue_fields[8], queue_fields[9], queue_fields[10],
queue_fields[11], queue_fields[12], queue_fields[13],
self.fw.QUEUE_NAMES[index])
queuelist.append(current_element)
current_queue_struct_address = current_element["next"]
@@ -1655,6 +1715,7 @@ class InternalBlue:
return queuelist
def enableBroadcomDiagnosticLogging(self, enable):
# type: (bool) -> None
"""
Broadcom implemented their own H4 layer protocol. Normally H4 handles HCI
messages like HCI commands, SCO and ACL data, and HCI events. Their types are
@@ -1675,9 +1736,15 @@ class InternalBlue:
"""
if not self.serial:
self.sendH4(hci.HCI.BCM_DIAG, '\xf0' + p8(enable))
self.sendH4(hci.HCI.BCM_DIAG, b'\xf0' + b'\x01' if enable else b'\x00')
# We can send the activation to the serial, but then the Android driver
# itself crashes when receiving diagnostic frames...
else:
log.warn("Diagnostic protocol requires modified Android driver!")
def _setupSockets(self):
raise NotImplementedError()
def _teardownSockets(self):
raise NotImplementedError()
+4 -2
View File
@@ -23,10 +23,12 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from builtins import hex
from builtins import object
from pwn import log
class Firmware:
class Firmware(object):
def __init__(self, version=None, iOS=False):
"""
Load and initialize the actual firmware add-ons for Nexus 5, Raspi3, etc.
@@ -60,7 +62,7 @@ class Firmware:
log.info("Loaded firmware information for " + self.firmware.FW_NAME + ".")
class MemorySection:
class MemorySection(object):
"""
All firmwares have memory sections that can be RAM, ROM or neither of both.
"""
+2 -1
View File
@@ -1,3 +1,4 @@
from __future__ import absolute_import
# fw_0x420e.py
#
# Generic firmware file in case we do not know something...
@@ -20,7 +21,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Samsung S10/S10e/S10+
+7 -2
View File
@@ -27,6 +27,7 @@
# Firmware Infos
# This runs on Rasperry Pi 3
from builtins import object
FW_NAME = "BCM43430A1"
# Device Infos
@@ -34,7 +35,7 @@ DEVICE_NAME = 0x20401C
BD_ADDR = 0x201C64
# Memory Sections
class MemorySection:
class MemorySection(object):
def __init__(self, start_addr, end_addr, is_rom, is_ram):
self.start_addr = start_addr
self.end_addr = end_addr
@@ -50,7 +51,7 @@ SECTIONS = [ MemorySection(0x0, 0x90000, True , False),
MemorySection(0xd0000, 0xd8000, False, True ),
#MemorySection(0xe0000, 0x1f0000, True , False),
MemorySection(0x200000, 0x21ffff, False, True ),
MemorySection(0x260000, 0x268000, True , False),
#MemorySection(0x260000, 0x268000, True , False), # might crash? issue 14
#MemorySection(0x280000, 0x2a0000, True , False),
MemorySection(0x318000, 0x320000, False, False),
MemorySection(0x324000, 0x360000, False, False),
@@ -74,6 +75,10 @@ PATCHRAM_VALUE_TABLE_ADDRESS = 0xd0000
PATCHRAM_NUMBER_OF_SLOTS = 128
PATCHRAM_ALIGNED = False
# Heap
BLOC_HEAD = 0x200588 # g_dynamic_memory_GeneralUsePools
BLOC_NG = True # Next Generation Bloc Buffer
# Snippet for sendLcpPacket()
SENDLCP_CODE_BASE_ADDRESS = 0x21a000
SENDLCP_ASM_CODE = """
+2 -1
View File
@@ -1,3 +1,4 @@
from __future__ import absolute_import
# fw_0x420e.py
#
# Generic firmware file in case we do not know something...
@@ -20,7 +21,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Evaluation Kit CYW20706
+2 -1
View File
@@ -1,3 +1,4 @@
from __future__ import absolute_import
# fw_0x420e.py
#
# Generic firmware file in case we do not know something...
@@ -20,7 +21,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Evaluation Kit CYW920819
+2 -1
View File
@@ -23,7 +23,8 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from __future__ import absolute_import
from .fw import MemorySection
# Firmware Infos
FW_NAME = "BCM20702A1 (USB Bluetooth dongle)"
+2 -1
View File
@@ -22,7 +22,8 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from __future__ import absolute_import
from .fw import MemorySection
# Firmware Infos
FW_NAME = "BCM20703A2 (MacBook Pro 2016)"
+2 -1
View File
@@ -25,7 +25,8 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from __future__ import absolute_import
from .fw import MemorySection
# Firmware Infos
# This runs on Nexus 6P, Samsung Galaxy S6, Samsung Galaxy S6 edge
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# iPhone 6
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Samsung Galaxy S8
+1 -1
View File
@@ -23,7 +23,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
FW_NAME = "BCM20702A2"
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Evaluation Kit CYW920735
+3 -3
View File
@@ -20,11 +20,11 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# Evaluation Kit CYW927019
FW_NAME = "CYW27039B1 (NOT iPhone X/XR!)"
# Evaluation Kit CYW920719
FW_NAME = "CYW20739B1 (NOT iPhone X/XR!)"
# TODO this is not the iPhone firmware, we need to add a switch in fw.py
# Device Infos
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# iPhone 8/X/XR
+1 -1
View File
@@ -22,7 +22,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
FW_NAME = "BCM2070B0 (MacBook Pro 2011)"
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# This runs on an iPhone 7
+1 -1
View File
@@ -25,7 +25,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# This runs on Nexus 5, Xperia Z3, Samsung Galaxy Note 3
+6 -1
View File
@@ -27,13 +27,14 @@
# Firmware Infos
# This runs on Rasperry Pi 3+
from builtins import object
FW_NAME = "BCM4345C0"
# Device Infos
DEVICE_NAME = 0x204954
# Memory Sections
class MemorySection:
class MemorySection(object):
def __init__(self, start_addr, end_addr, is_rom, is_ram):
self.start_addr = start_addr
self.end_addr = end_addr
@@ -73,6 +74,10 @@ PATCHRAM_VALUE_TABLE_ADDRESS = 0xd0000
PATCHRAM_NUMBER_OF_SLOTS = 128
PATCHRAM_ALIGNED = False
# Heap
BLOC_HEAD = 0x200490 # g_dynamic_memory_GeneralUsePools
BLOC_NG = True # Next Generation Bloc Buffer
# Snippet for sendLcpPacket()
SENDLCP_CODE_BASE_ADDRESS = 0x21f000
SENDLCP_ASM_CODE = """
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# iPhone 6
+1 -1
View File
@@ -20,7 +20,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
# iPhone SE
+1 -1
View File
@@ -22,7 +22,7 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from fw import MemorySection
from .fw import MemorySection
# Firmware Infos
FW_NAME = "default (unknown firmware)"
+29 -10
View File
@@ -25,7 +25,14 @@
# out of or in connection with the Software or the use or other dealings in the
# Software.
from pwn import *
from __future__ import absolute_import
from builtins import hex
from builtins import range
from builtins import object
from internalblue.utils.pwnlib_wrapper import p8, u16, p16, unbits, bits_str, u8, bits, p32, u32
from internalblue.utils.pwnlib_wrapper import log
from pwnlib.util.packing import flat
HCI_UART_TYPE_CLASS = {}
@@ -52,10 +59,11 @@ class HCI(object):
@staticmethod
def from_data(data):
uart_type = ord(data[0])
uart_type = data[0]
return HCI_UART_TYPE_CLASS[uart_type].from_data(data[1:])
def __init__(self, uart_type):
self.event_code = None
self.uart_type = uart_type
def getRaw(self):
@@ -572,7 +580,7 @@ class HCI_Cmd(HCI):
0xffed : "COMND VSC_EnterDownloadMode"
}
HCI_CMD_STR_REVERSE = {v: k for k, v in HCI_CMD_STR.iteritems()}
HCI_CMD_STR_REVERSE = {v: k for k, v in HCI_CMD_STR.items()}
@staticmethod
def cmd_name(opcode):
@@ -606,7 +614,7 @@ class HCI_Cmd(HCI):
@staticmethod
def from_data(data):
return HCI_Cmd(u16(data[0:2]), ord(data[2]), data[3:])
return HCI_Cmd(u16(data[0:2]), data[2], data[3:])
def __init__(self, opcode, length, data):
HCI.__init__(self, HCI.HCI_CMD)
@@ -622,7 +630,7 @@ class HCI_Cmd(HCI):
cmdname = "unknown"
if self.opcode in self.HCI_CMD_STR:
cmdname = self.HCI_CMD_STR[self.opcode]
return parent + "<0x%04x %s (len=%d): %s>" % (self.opcode, cmdname, self.length, self.data[0:16].encode('hex'))
return parent + "<0x%04x %s (len=%d): %s>" % (self.opcode, cmdname, self.length, ''.join(format(x, '02x') for x in self.data[0:16]))
class HCI_Acl(HCI):
@@ -697,7 +705,7 @@ class HCI_Diag(HCI):
cmdname = "unknown"
if self.opcode in self.BCM_DIAG_STR:
cmdname = self.BCM_DIAG_STR[self.opcode]
return parent + "<0x%02x %s: %s>" % (self.opcode, cmdname, self.data[0:16].encode('hex'))
return parent + "<0x%02x %s: %s>" % (self.opcode, cmdname, ''.join(format(x, '02x') for x in self.data[0:16]))
class HCI_Event(HCI):
@@ -886,7 +894,7 @@ class HCI_Event(HCI):
@staticmethod
def from_data(data):
return HCI_Event(ord(data[0]), ord(data[1]), data[2:])
return HCI_Event(data[0], data[1], data[2:])
def __init__(self, event_code, length, data):
HCI.__init__(self, HCI.HCI_EVT)
@@ -902,7 +910,7 @@ class HCI_Event(HCI):
eventname = "unknown"
if self.event_code in self.HCI_EVENT_STR:
eventname = self.HCI_EVENT_STR[self.event_code]
return parent + "<0x%02x %s (len=%d): %s>" % (self.event_code, eventname, self.length, self.data[0:].encode('hex'))
return parent + "<0x%02x %s (len=%d): %s>" % (self.event_code, eventname, self.length, ''.join(format(x, '02x') for x in self.data[0:]))
HCI_UART_TYPE_CLASS = {
HCI.HCI_CMD : HCI_Cmd,
@@ -916,7 +924,7 @@ def parse_hci_packet(data):
return HCI.from_data(data)
class StackDumpReceiver:
class StackDumpReceiver(object):
memdump_addr = None
memdumps = {}
stack_dump_has_happend = False
@@ -957,9 +965,10 @@ class StackDumpReceiver:
if self.memdump_addr == None:
self.memdump_addr = addr
self.memdumps[addr-self.memdump_addr] = data[4:]
log.debug("Stack dump handling addr %08x", addr-self.memdump_addr)
def finishStackDump(self):
dump = fit(self.memdumps)
dump = flat(self.memdumps)
log.warn("Stack dump @0x%08x written to %s!" % (self.memdump_addr, self.stack_dump_filename))
f = open(self.stack_dump_filename, "wb")
f.write(dump)
@@ -1091,6 +1100,16 @@ class StackDumpReceiver:
self.finishStackDump()
return True
# On a Raspberry Pi 3, the last packet of a stack dump is '1b0340df0338'.... so it's 0x40
elif packet_type == 0xe8:
# FIXME Raspi memdump is divided in two parts!
# address change from 0001fe38 to packet type e8 and then it's computing addr -0130000
# negative addr does not work with finishStackDump()
# so even though the last packet is 0x40, let's just finish on 0xe8
log.info("End of first stackdump block, writing to file and skipping second...")
self.finishStackDump()
return True
return False
+40 -19
View File
@@ -1,14 +1,32 @@
#!/usr/bin/env python2
from __future__ import absolute_import
import socket
import struct
from future import standard_library
standard_library.install_aliases()
from builtins import str
from builtins import zip
from builtins import range
import subprocess
import datetime
from pwn import *
from internalblue.utils.pwnlib_wrapper import log, context, p32, u16, p16, u32
import fcntl
from core import InternalBlue
import hci
import Queue
from .core import InternalBlue
from . import hci
import queue as queue2k
import threading
try:
from typing import List
from internalblue import Device
except:
pass
# from /usr/include/bluetooth/hci.h:
#define HCIDEVUP _IOW('H', 201, int)
#define HCIGETDEVLIST _IOR('H', 210, int)
@@ -27,13 +45,14 @@ HCIGETDEVINFO = _IOR(ord('H'), 211, 4)
class HCICore(InternalBlue):
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory="."):
super(HCICore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory)
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory=".", replay=False):
super(HCICore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory, replay)
self.btsnooplog_file_lock = threading.Lock()
self.serial = False
self.doublecheck = False
def getHciDeviceList(self):
# type: () -> List[Device]
"""
Get a list of available HCI devices. The list is obtained by executing
ioctl syscalls HCIGETDEVLIST and HCIGETDEVINFO. The returned list
@@ -56,7 +75,7 @@ class HCICore(InternalBlue):
# Do ioctl(s,HCIGETDEVLIST,arg) to get the number of available devices:
# arg is struct hci_dev_list_req (/usr/include/bluetooth/hci.h)
arg = p32(16) # dl->dev_num = HCI_MAX_DEV which is 16 (little endian)
arg += "\x00"*(8*16)
arg += b"\x00"*(8*16)
devices_raw = fcntl.ioctl(s.fileno(), HCIGETDEVLIST, arg)
num_devices = u16(devices_raw[:2])
log.debug("Found %d HCI devices via ioctl(HCIGETDEVLIST)!" % num_devices)
@@ -67,10 +86,10 @@ class HCICore(InternalBlue):
dev_id = u16(devices_raw[dev_struct_start:dev_struct_start+2])
# arg is struct hci_dev_info (/usr/include/bluetooth/hci.h)
arg = p16(dev_id) # di->dev_id = <device_id>
arg += "\x00"*20 # Enough space for name, bdaddr and flags
dev_info_raw = fcntl.ioctl(s.fileno(), HCIGETDEVINFO, arg)
dev_name = dev_info_raw[2:10].replace("\x00","")
dev_bdaddr = ":".join(["%02X" % ord(x) for x in dev_info_raw[10:16][::-1]])
arg += b"\x00"*20 # Enough space for name, bdaddr and flags
dev_info_raw = bytearray(fcntl.ioctl(s.fileno(), HCIGETDEVINFO, arg))
dev_name = dev_info_raw[2:10].replace(b"\x00",b"").decode()
dev_bdaddr = ":".join(["%02X" % x for x in dev_info_raw[10:16][::-1]])
dev_flags = u32(dev_info_raw[16:20])
if dev_flags == 0:
dev_flags_str = "DOWN"
@@ -117,14 +136,15 @@ class HCICore(InternalBlue):
"""
Return a list of connected hci devices.
"""
if self.replay:
return [(self, "hci_replay", 'hci: ReplaySocket')]
device_list = []
for dev in self.getHciDeviceList():
log.info("HCI device: %s [%s] flags=%d<%s>" %
(dev["dev_name"], dev["dev_bdaddr"],
dev["dev_flags"], dev["dev_flags_str"]))
device_list.append([self, dev["dev_name"], 'hci: %s (%s) <%s>' %
(dev["dev_bdaddr"], dev["dev_name"], dev["dev_flags_str"])])
device_list.append((self, dev["dev_name"], 'hci: %s (%s) <%s>' %
(dev["dev_bdaddr"], dev["dev_name"], dev["dev_flags_str"])))
if len(device_list) == 0:
log.info('No connected HCI device found')
@@ -182,10 +202,11 @@ class HCICore(InternalBlue):
# Read the record data
try:
record_data = self.s_snoop.recv(1024)
record_data = bytearray(record_data)
except socket.timeout:
continue # this is ok. just try again without error
except Exception:
log.critical("Lost device interface, terminating receive thread...")
except Exception as e:
log.critical("Lost device interface with exception {}, terminating receive thread...".format(e))
self.exit_requested = True
continue
@@ -217,7 +238,7 @@ class HCICore(InternalBlue):
if filter_function == None or filter_function(record):
try:
queue.put(record, block=False)
except Queue.Full:
except queue.Full:
log.warn("recvThreadFunc: A recv queue is full. dropping packets..")
# Call all callback functions inside registeredHciCallbacks and pass the
@@ -268,7 +289,7 @@ class HCICore(InternalBlue):
"""
# TODO still seems to only forward incoming events?!
self.s_snoop.setsockopt(socket.SOL_HCI, socket.HCI_FILTER,
'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00') #type mask, event mask, event mask, opcode
b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00') #type mask, event mask, event mask, opcode
interface_num = device["dev_id"]
log.debug("Socket interface number: %s" % (interface_num))
@@ -282,7 +303,7 @@ class HCICore(InternalBlue):
# Write Header to btsnoop file (if file is still empty):
if self.write_btsnooplog and self.btsnooplog_file.tell() == 0:
# BT Snoop Header: btsnoop\x00, version: 1, data link type: 1002
btsnoop_hdr = "btsnoop\x00" + p32(1,endian="big") + p32(1002,endian="big")
btsnoop_hdr = b"btsnoop\x00" + p32(1,endian="big") + p32(1002,endian="big")
with self.btsnooplog_file_lock:
self.btsnooplog_file.write(btsnoop_hdr)
self.btsnooplog_file.flush()
+15 -8
View File
@@ -1,12 +1,19 @@
#!/usr/bin/env python2
from __future__ import absolute_import
import struct
from future import standard_library
standard_library.install_aliases()
from builtins import str
import socket
import Queue
import hci
import queue as queue2k
from . import hci
from pwn import *
from internalblue.utils.pwnlib_wrapper import log, context
from core import InternalBlue
from .core import InternalBlue
class iOSCore(InternalBlue):
@@ -49,16 +56,16 @@ class iOSCore(InternalBlue):
the command or None if no response was received within the timeout.
"""
queue = Queue.Queue(1)
queue = queue2k.Queue(1)
try:
self.sendQueue.put((h4type, data, queue, None), timeout=timeout)
ret = queue.get(timeout=timeout)
return ret
except Queue.Empty:
except queue2k.Empty:
log.warn("sendH4: waiting for response timed out!")
return None
except Queue.Full:
except queue.Full:
log.warn("sendH4: send queue is full!")
return None
@@ -173,7 +180,7 @@ class iOSCore(InternalBlue):
for queue, filter_function in self.registeredHciRecvQueues: # TODO filter_function not working with bluez modifications
try:
queue.put(record, block=False)
except Queue.Full:
except queue.Full:
log.warn("recvThreadFunc: A recv queue is full. dropping packets..")
# Call all callback functions inside registeredHciCallbacks and pass the
+46 -49
View File
@@ -1,30 +1,42 @@
#!/usr/bin/env python2
from __future__ import absolute_import
import random
import time
from future import standard_library
standard_library.install_aliases()
from builtins import str
import socket
import Queue
import hci
import queue as queue2k
from . import hci
from pwn import *
from core import InternalBlue
from internalblue.utils.pwnlib_wrapper import log, context, p8
from .core import InternalBlue
import objc
import binascii
import os
filepath = os.path.dirname(os.path.abspath(__file__))
objc.initFrameworkWrapper("IOBluetoothExtended",
frameworkIdentifier="de.tu-darmstadt.seemoo.IOBluetoothExtended",
frameworkPath=objc.pathForFramework(filepath+"/../macos-framework/IOBluetoothExtended.framework"),
globals=globals())
IOBE = None
class macOSCore(InternalBlue):
NSNotificationCenter = objc.lookUpClass('NSNotificationCenter')
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory="."):
super(macOSCore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory=".")
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory=".", replay=False):
super(macOSCore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory=".", replay=replay)
self.doublecheck = False
self.iobe = None
self.serial = None
if not replay:
import objc
objc.initFrameworkWrapper("IOBluetoothExtended",
frameworkIdentifier="de.tu-darmstadt.seemoo.IOBluetoothExtended",
frameworkPath=objc.pathForFramework(
filepath + "/../macos-framework/IOBluetoothExtended.framework"),
globals=globals())
self.hciport = -1
def device_list(self):
"""
@@ -43,28 +55,6 @@ class macOSCore(InternalBlue):
return device_list
def sendH4(self, h4type, data, timeout=2):
"""
Send an arbitrary HCI packet by pushing a send-task into the
sendQueue. This function blocks until the response is received
or the timeout expires. The return value is the Payload of the
HCI Command Complete Event which was received in response to
the command or None if no response was received within the timeout.
"""
queue = Queue.Queue(1)
try:
self.sendQueue.put((h4type, data, queue, None), timeout=timeout)
ret = queue.get(timeout=timeout)
return ret
except Queue.Empty:
log.warn("sendH4: waiting for response timed out!")
return None
except Queue.Full:
log.warn("sendH4: send queue is full!")
return None
def local_connect(self):
if not self._setupSockets():
log.critical("No connection to target device.")
@@ -90,7 +80,10 @@ class macOSCore(InternalBlue):
# Create IOBluetoothExtended Object that listens for commands,
# sends them to the Bluetooth chip and replies via UDP socket.
self.iobe = IOBE.alloc().initWith_and_(str(self.hciport+1), str(self.hciport))
if not self.replay:
self.iobe = IOBE.alloc().initWith_and_(str(self.hciport+1), str(self.hciport))
else:
self.iobe = None
time.sleep(0.5)
return True
@@ -106,7 +99,7 @@ class macOSCore(InternalBlue):
# read record data
try:
data, addr = self.s_snoop.recvfrom(1024)
record_data = data
record_data = bytearray(data)
except socket.timeout:
continue # this is ok. just try again without error
@@ -114,14 +107,13 @@ class macOSCore(InternalBlue):
# Put all relevant infos into a tuple. The HCI packet is parsed with the help of hci.py.
record = (hci.parse_hci_packet(record_data), 0, 0, 0, 0, 0) #TODO not sure if this causes trouble?
log.debug("Recv: " + str(record[0]))
log.info(binascii.hexlify(record_data))
# Put the record into all queues of registeredHciRecvQueues if their
# filter function matches.
for queue, filter_function in self.registeredHciRecvQueues: # TODO filter_function not working with bluez modifications
try:
queue.put(record, block=False)
except Queue.Full:
except queue.Full:
log.warn("recvThreadFunc: A recv queue is full. dropping packets..>" + record_data)
# Call all callback functions inside registeredHciCallbacks and pass the
@@ -140,7 +132,7 @@ class macOSCore(InternalBlue):
# Wait for 'send task' in send queue
try:
task = self.sendQueue.get(timeout=0.5)
except Queue.Empty:
except queue2k.Empty:
continue
# Extract the components of the task
@@ -151,12 +143,20 @@ class macOSCore(InternalBlue):
# Send command to the chip using IOBluetoothExtended framework
h4type, data, queue, filter_function = task
opcode = binascii.hexlify(data[1]) + binascii.hexlify(data[0])
log.debug("Sending command: 0x" + binascii.hexlify(data) + ", opcode: " + opcode)
data = bytearray(data)
opcode = format(data[1], '02x') + format(data[0], '02x')
log.debug("Sending command: 0x" + ''.join(format(x, '02x') for x in data) + ", opcode: " + opcode)
if not(h4type == 0x01 or h4type == 0x02):
log.warn("H4 Type {0} not supported by macOS Core!".format(str(h4type)))
if queue is not None:
queue.put(None)
continue
# if the caller expects a response: register a queue to receive the response
if queue is not None and filter_function is not None:
recvQueue = Queue.Queue(1)
recvQueue = queue2k.Queue(1)
self.registerHciRecvQueue(recvQueue, filter_function)
# Sending command
@@ -169,7 +169,7 @@ class macOSCore(InternalBlue):
record = recvQueue.get(timeout=10)
hcipkt = record[0]
data = hcipkt.data
except Queue.Empty:
except queue2k.Empty:
log.warn("_sendThreadFunc: No response from the firmware.")
data = None
self.unregisterHciRecvQueue(recvQueue)
@@ -180,9 +180,6 @@ class macOSCore(InternalBlue):
log.debug("Send Thread terminated.")
def enableBroadcomDiagnosticLogging(self, enable):
return
def _teardownSockets(self):
if self.s_inject is not None:
self.s_inject.close()
@@ -195,7 +192,7 @@ class macOSCore(InternalBlue):
return True
def shutdown(self):
self.iobe.shutdown()
socket.socket(socket.AF_INET, socket.SOCK_DGRAM).sendto(
"", ('127.0.0.1', self.s_snoop.getsockname()[1]))
if not self.replay:
self.iobe.shutdown()
self.s_inject.sendto(b'', ('127.0.0.1', self.s_snoop.getsockname()[1]))
super(macOSCore, self).shutdown()
View File
@@ -0,0 +1,68 @@
from builtins import object
from internalblue.utils.pwnlib_wrapper import u32, u16, u8
class ConnectionInformation(object):
connection_handle = 0
connection_number = 0
master_of_connection = False
remote_name_address = 0
remote_address = None
id = None
public_rand = None
extended_lmp_feat = None
link_key = None
tx_pwr_lvl_dBm = 0
effective_key_len = 0
host_supported_feat = None
def __init__(self, connection_number, remote_address, remote_name_address, master_of_connection, connection_handle,
public_rand, effective_key_len, link_key, tx_pwr_lvl_dBm, extended_lmp_feat, host_supported_feat, id):
self.connection_number = connection_number
self.remote_address = remote_address
self.remote_name_address = remote_name_address
self.master_of_connection = master_of_connection
self.connection_handle = connection_handle
self.public_rand = public_rand
self.effective_key_len = effective_key_len
self.link_key = link_key
self.tx_pwr_lvl_dBm = tx_pwr_lvl_dBm
self.extended_lmp_feat = extended_lmp_feat
self.host_supported_feat = host_supported_feat
self.id = id
@staticmethod
def from_connection_buffer(connection):
# Possible TODO: Convert this to a Katai Struct parser with a proper .ksy grammar.
return ConnectionInformation(u32(connection[:4]), connection[0x28:0x2E][::-1],
u32(connection[0x4C:0x50]),
u32(connection[0x1C:0x20]) & 1 << 15 == 0,
u16(connection[0x64:0x66]),
connection[0x78:0x88],
u8(connection[0xa7:0xa8]),
connection[0x68:0x68 + u8(connection[0xa7:0xa8])],
u8(connection[0x9c:0x9d]) - 127,
connection[0x30:0x38], connection[0x38:0x40],
connection[0x0c:0x0d])
# For some reason the following doesn't work because some attributes like link_key end up as one element tuples
# connection_number = u32(connection[:4])
# remote_address = connection[0x28:0x2E][::-1],
# remote_name_address = u32(connection[0x4C:0x50])
# master_of_connection = u32(connection[0x1C:0x20]) & 1 << 15 == 0
# connection_handle = u16(connection[0x64:0x66])
# public_rand = connection[0x78:0x88]
# effective_key_len = u8(connection[0xa7:0xa8])
# link_key = connection[0x68:0x68 + effective_key_len],
# tx_pwr_lvl_dBm = u8(connection[0x9c:0x9d]) - 127,
# extended_lmp_feat = connection[0x30:0x38]
# host_supported_feat = connection[0x38:0x40]
# id = connection[0x0c:0x0d]
# return ConnectionInformation(connection_number, remote_address, remote_name_address, master_of_connection,
# connection_handle,
# public_rand, effective_key_len, link_key, tx_pwr_lvl_dBm, extended_lmp_feat,
# host_supported_feat, id)
def __getitem__(self, item):
# type: (str) -> Any
return vars(self)[item]
+39
View File
@@ -0,0 +1,39 @@
from builtins import object
class QueueElement(object):
index = 0
next_item = 0
prev = 0
capacity = 0
name = ''
queue_buf_start = 0
available_items = 0
item_size = 0
next_free_slot = 0
free_slots = 0
address = 0
waitlist_length = 0
next = 0
queue_buf_end = 0
thread_waitlist = 0
def __init__(self, index, address, item_size, capacity, available_items, free_slots, queue_buf_start, queue_buf_end,
next_item, next_free_slot, thread_waitlist, waitlist_length, next, prev, name):
self.index = index
self.next_item = next_item
self.prev = prev
self.capacity = capacity
self.name = name
self.queue_buf_start = queue_buf_start
self.available_items = available_items
self.item_size = item_size
self.next_free_slot = next_free_slot
self.free_slots = free_slots
self.address = address
self.waitlist_length = waitlist_length
self.next = next
self.queue_buf_end = queue_buf_end
self.thread_waitlist = thread_waitlist
def __getitem__(self, item):
# type: (str) -> Any
return vars(self)[item]
+307
View File
@@ -0,0 +1,307 @@
from __future__ import print_function
from builtins import object
import binascii
import time
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple, Dict, Type
except ImportError:
pass
class SocketRecvHook(object):
def __init__(self, socket):
# type: (socket.socket) -> None
self.snoop_socket = socket
self.replace = False
def recv_hook(self, data):
raise NotImplementedError("recv_hook not implemented")
def recv_replace(self, length, **kwargs):
raise NotImplementedError("recv_replace not implemented")
def recv(self, length, **kwargs):
if not self.replace:
data = self.snoop_socket.recv(length, **kwargs)
else:
data = self.recv_replace(length, **kwargs)
self.recv_hook(data)
return data
def recvfrom_replace(self, length, **kwargs):
raise NotImplementedError("recvfrom_replace not implemented")
def recvfrom_hook(self, data, addr):
raise NotImplementedError("recvfrom_hook not implemented")
def recvfrom(self, length, **kwargs):
# type: (int, Dict[str, Any]) -> Tuple[bytes, Any]
if not self.replace:
data, addr = self.snoop_socket.recvfrom(length)
else:
data, addr = self.recvfrom_replace(length, **kwargs)
self.recvfrom_hook(data, addr)
return data, addr
class SocketInjectHook(object):
def __init__(self, socket, core):
# type: (socket.socket, InternalBlue) -> None
self.inject_socket = socket
self.replace = False
self.core = core # type: InternalBlue
def close(self):
if self.inject_socket:
self.inject_socket.close()
def send(self, data):
self.send_hook(data)
if not self.replace:
try:
self.inject_socket.send(data)
except Exception as e:
self.send_exception(e)
self.core.test_failed = e
raise
else:
try:
self.send_replace(data)
except Exception as e:
self.core.test_failed = e
raise
def sendto(self, data, socket):
self.sendto_hook(data, socket)
if not self.replace:
try:
self.inject_socket.sendto(data, socket)
except Exception as e:
self.send_exception(e)
self.core.test_failed = e
raise
else:
try:
self.send_replace(data)
except Exception as e:
self.core.test_failed = e
raise
def getsockname(self):
return self.snoop_socket.getsockname()
def send_hook(self, result):
raise NotImplementedError("send_hook not implemented")
def sendto_hook(self, data, socket):
raise NotImplementedError("sendto_hook not implemented")
def send_replace(self, data):
raise NotImplementedError("send_replace not implemented")
def send_exception(self, e):
raise NotImplementedError("send_exception not implemented")
class SocketDuplexHook(SocketInjectHook, SocketRecvHook):
def __init__(self, snoop_socket, inject_socket, core, **kwargs):
# type: (socket.socket, socket.socket, InternalBlue, Dict[str, Any]) -> None
self.snoop_socket = snoop_socket
self.inject_socket = inject_socket
self.replace = False
self.core = core
pass
class HookBase(object):
def send_hook(self, data):
raise NotImplementedError
def recv_hook(self, data):
raise NotImplementedError
class TraceToFileHook(SocketDuplexHook):
def __init__(self, snoop_socket, inject_socket, core, filename='/tmp/bt_hci.log'):
# type: (socket.socket, socket.socket, InternalBlue, str) -> None
SocketDuplexHook.__init__(self, snoop_socket, inject_socket, core)
self.file = open(filename, 'a')
self.replace = False
self.log = []
self.closed = False
def recv_hook(self, data):
line = "RX {}\n".format(binascii.hexlify(data))
print(line)
self.log.append(line)
def send_hook(self, data):
line = "TX {}\n".format(binascii.hexlify(data))
print(line)
self.log.append(line)
def recvfrom_hook(self, data, socket, **kwargs):
line = "RX {}\n".format(binascii.hexlify(data))
print(line)
self.log.append(line)
def sendto_hook(self, data, socket, **kwargs):
line = "TX {}\n".format(binascii.hexlify(data))
print(line)
self.log.append(line)
def send_exception(self, e):
line = "EX '{}'\n".format(e)
print(line)
self.log.append(line)
def close(self):
if not self.closed:
self.inject_socket.close()
self.snoop_socket.close()
self.log.append("Socket closed\n")
self.file.writelines(self.log)
self.file.close()
self.closed = True
import socket
class PrintTrace(SocketDuplexHook):
def send_hook(self, data, **kwargs):
print("Sent: {}".format(binascii.hexlify(data)))
def recv_hook(self, data, **kwargs):
print("Recv: {}".format(binascii.hexlify(data)))
def recvfrom_hook(self, data, addr, **kwargs):
print("Recv: {}".format(binascii.hexlify(data)))
def sendto_hook(self, data, socket, **kwargs):
print("Sent: {}".format(binascii.hexlify(data)))
def send_exception(self, e):
print("Exception: {}".format(e))
class ReplaySocket(SocketDuplexHook):
def __init__(self, snoop_socket, inject_socket, core, filename='/tmp/bt_hci.log', debug=False):
SocketDuplexHook.__init__(self, snoop_socket, inject_socket, core)
self.replace = True
self.log = open(filename).readlines()
self.index = 0
self.debug = debug
if self.log[0].startswith("#"):
self.index = 1
def send_hook(self, data, **kwargs):
if self.debug:
print("Sent: {}".format(binascii.hexlify(data)))
def recv_hook(self, data, **kwargs):
if self.debug:
print("Recv: {}".format(binascii.hexlify(data)))
def recvfrom_hook(self, data, addr, **kwargs):
if self.debug:
print("Recv: {}".format(binascii.hexlify(data)))
def sendto_hook(self, data, socket, **kwargs):
if self.debug:
print("Sent: {}".format(binascii.hexlify(data)))
def send_exception(self, e):
if self.debug:
print("Exception: {}".format(e))
def send_replace(self, data, **kwargs):
encoded_data = "" # type: str
hex_data = binascii.hexlify(data)
direction, encoded_data = self.log[self.index].split(" ", 1)
if direction == "RX":
# Some recieves aren't handled yet, wait a bit so the recv thread takes care of them.
time.sleep(0.2)
direction, encoded_data = self.log[self.index].split(" ", 1)
assert (direction == "TX")
log_data = binascii.unhexlify(encoded_data.rstrip('\n'))
assert data == log_data, "Got {}, expected {}".format(hex_data, encoded_data)
self.index += 1
ty, data = self.log[self.index].split(" ", 1)
if ty == "EX":
self.index += 1
raise socket.error(data)
def recv_replace(self, length, **kwargs):
time.sleep(0.001)
direction, encoded_data = self.log[self.index].split(" ", 1)
if direction == "RX":
self.index += 1
return binascii.unhexlify(encoded_data.rstrip('\n'))
else:
raise socket.timeout()
def recvfrom_replace(self, length, **kwargs):
time.sleep(0.001)
direction, encoded_data = self.log[self.index].split(" ", 1)
if direction == "RX":
self.index += 1
return binascii.unhexlify(encoded_data.rstrip('\n')), 1234
else:
raise socket.timeout()
def getsockname(self):
return (None, 0)
def close(self):
assert self.index + 1 == len(self.log)
from internalblue.core import InternalBlue
def hook(core, socket_hook, **hookkwargs):
# type: (Type[InternalBlue], Type[SocketDuplexHook], Any) -> None
def wrap_socket_setup(orig_func):
def wrapped_socket_setup(self, *args, **kwargs):
if not self.replay:
status = orig_func(self, *args, **kwargs)
else:
status = True
h = socket_hook(self.s_snoop, self.s_inject, core=self, **hookkwargs)
self.s_inject = h
self.s_snoop = h
return status
return wrapped_socket_setup
core._setupSockets = wrap_socket_setup(core._setupSockets)
def wrap_teardown_sockets(orig_func):
def wrapped_teardown_sockets(self, *args, **kwargs):
if not self.replay:
return orig_func(self, *args, **kwargs)
else:
self.s_inject.close()
self.s_snoop.close()
return wrapped_teardown_sockets
core._teardownSockets = wrap_teardown_sockets(core._teardownSockets)
def wrap_device_list(orig_func):
def wrapped_device_list(self, *args, **kwargs):
if not self.replay:
return orig_func(self, *args, **kwargs)
else:
return [(self, "ReplayDevice", "ReplayDevice")]
return wrapped_device_list
core.device_list = wrap_device_list(core.device_list)
+171
View File
@@ -0,0 +1,171 @@
#!/usr/bin/env python2
from __future__ import print_function
from __future__ import absolute_import
import os
import random
import time
from future import standard_library
from pwnlib.context import context
standard_library.install_aliases()
import socket
import queue as queue2k
from . import hci
from internalblue.utils.pwnlib_wrapper import log, p8
from .core import InternalBlue
import binascii
filepath = os.path.dirname(os.path.abspath(__file__))
try:
import typing
from typing import List, Tuple, Any
from internalblue.core import InternalBlue
except:
pass
class testCore(InternalBlue):
def __init__(self, queue_size=1000, btsnooplog_filename='btsnoop.log', log_level='info', fix_binutils='True', data_directory="."):
super(testCore, self).__init__(queue_size, btsnooplog_filename, log_level, fix_binutils, data_directory=".")
file = open(filepath+'/../dummymemdump.bin', mode='rb')
self.memory = file.read()
file.close()
self.doublecheck = False
def device_list(self):
# type: () -> List[Tuple[InternalBlue,str,str]]
"""
Get a list of connected devices
"""
if self.exit_requested:
self.shutdown()
if self.running:
log.warn("Already running. Call shutdown() first!")
return []
# assume that a explicitly specified iPhone exists
device_list = [(self, "Testchip", "Testchip")]
return device_list
def sendH4(self, h4type, data, timeout=2):
"""
Send an arbitrary HCI packet by pushing a send-task into the
sendQueue. This function blocks until the response is received
or the timeout expires. The return value is the Payload of the
HCI Command Complete Event which was received in response to
the command or None if no response was received within the timeout.
"""
queue = queue2k.Queue(1)
try:
self.sendQueue.put((h4type, data, queue, None), timeout=timeout)
ret = queue.get(timeout=timeout)
return ret
except queue2k.Empty:
log.warn("sendH4: waiting for response timed out!")
return None
except queue.Full:
log.warn("sendH4: send queue is full!")
return None
def local_connect(self):
return True
def _setupSockets(self):
self.hciport = random.randint(60000, 65535 - 1)
log.debug("_setupSockets: Selected random ports snoop=%d and inject=%d" % (self.hciport, self.hciport + 1))
log.info("Wireshark configuration (on Loopback interface): udp.port == %d || udp.port == %d" % (
self.hciport, self.hciport + 1))
# Create s_snoop socket
self.s_snoop = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s_snoop.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.s_snoop.bind(('127.0.0.1', self.hciport))
self.s_snoop.settimeout(0.5)
self.s_snoop.setblocking(True)
# Create s_inject
self.s_inject = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s_inject.settimeout(0.5)
self.s_inject.setblocking(True)
time.sleep(1.5)
return True
def _recvThreadFunc(self):
log.debug("Receive Thread terminated.")
def _sendThreadFunc(self):
log.debug("Send Thread started.")
while not self.exit_requested:
# Little bit ugly: need to re-apply changes to the global context to the thread-copy
context.log_level = self.log_level
# Wait for 'send task' in send queue
try:
task = self.sendQueue.get(timeout=0.5)
except queue2k.Empty:
continue
# Extract the components of the task
h4type, data, queue, filter_function = task
# Prepend UART TYPE and length.
out = p8(h4type) + p8(len(data)) + data
# Send command to the chip using IOBluetoothExtended framework
h4type, data, queue, filter_function = task
opcode = binascii.hexlify(data[1]) + binascii.hexlify(data[0])
log.debug("Sending command: 0x" + binascii.hexlify(data))
# if the caller expects a response: register a queue to receive the response
if queue is not None and filter_function is not None:
recvQueue = queue2k.Queue(1)
self.registerHciRecvQueue(recvQueue, filter_function)
# if the caller expects a response:
# Wait for the HCI event response by polling the recvQueue
if queue is not None and filter_function is not None:
# Return responses according to the opcode & operands
if opcode == '1001':
record_data = '040E0C0101100006b415060f000e22'.decode('hex')
data = hci.parse_hci_packet(record_data).data
elif opcode == 'fc4d':
length = int(binascii.hexlify(data[7]), 16)
address = int(binascii.hexlify(data[6]+data[5]+data[4]+data[3]), 16)
data = '014dfc00'.decode('hex') + self.memory[address:address+length]
elif opcode == 'fc4c':
log.info(data.encode('hex'))
length = int(binascii.hexlify(data[2]), 16)
address = int(binascii.hexlify(data[6]+data[5]+data[4]+data[3]), 16)
self.memory = self.memory[:address] + data[7:len(data)] + self.memory[address+length:]
else:
print(opcode)
queue.put(data)
self.unregisterHciRecvQueue(recvQueue)
log.debug("Send Thread terminated.")
def enableBroadcomDiagnosticLogging(self, enable):
return
def _teardownSockets(self):
return True
def shutdown(self):
return True
+11
View File
@@ -0,0 +1,11 @@
#from pwnlib.util.packing import *
def bytes_to_hex(bytes):
# type: (bytearray) -> str
return ''.join(format(x, '02x') for x in bytearray(bytes))
+91
View File
@@ -0,0 +1,91 @@
"""
The following proxies various utilities from pwnlibs by explicitly importing them
To replace a "from pwn import *" remove it and let your IDE highlight all missing methods (Hint: F2 in PyCharm goes to next error)
import the missing (and only the missing!) methods from this module, e.g. with "from internalblue.utils import term, read, log, text, options"
In some cases like "from pwn import socket" this just imports another module.
Use an IPython shell to run "from pwn import *" and check where some method/module actually comes from and either import it directly or add it to this module
"""
# Imports that used to be imported via 'from pwn import *'
import pwnlib
from pwnlib import term
from pwnlib.util import iters
from pwnlib.util.misc import read
from pwnlib.context import context
#TODO: Logging via pwnlib doesn't work yet, so for now it is still used via pwn
# import pwnlib.log
# pwnlib.log.install_default_handler()
# log = pwnlib.log.getLogger('internalbue')
from pwn import log
from pwnlib.term import text
from pwnlib.ui import options, yesno
from pwnlib.util.packing import flat
from pwnlib.asm import disasm
from pwnlib.util.fiddling import isprint, unbits, bits_str, bits
"""
The packers like u8 are generated in a fairly convoluted way that breaks IDE introspection.
The following code remedies this by:
- Explicitly defining a stub function with type annotations
- Generating all the packers like pwnlibs would
- Only if if the current module already has the name of the packer as an attribute (i.e. has a stub function defined) it will be replaced with the pwnlibs version
This means:
- All import issues in the rest of the code are genuine as the imports are only available if an explicit stub function is added
- The functions can be easily replaced by just implementing them and removing the for loop at the end
"""
# Imports needed for this hack
from pwnlib.util.packing import ops, sizes, make_multi
import sys
try:
from typing import Union, Optional, Literal
endianess = Union[Literal['big']]
except ImportError:
pass
mod = sys.modules[__name__]
_DEFINES = ['u8', 'p8', 'u32', 'u16', 'p32']
def u8(data, endian = None):
# type: (bytes, Optional[endianess]) -> int
pass
def p8(number, endian = None):
# type: (int, Optional[endianess]) -> bytes
pass
def u16(data, endian = None):
# type: (bytes, Optional[endianess]) -> int
pass
def p16(number, endian = None):
# type: (int, Optional[endianess]) -> bytes
pass
def u32(data, endian = None):
# type: (bytes, Optional[endianess]) -> int
pass
def p32(number, endian = None):
# type: (int, Optional[endianess]) -> bytes
pass
for op, size in iters.product(ops, sizes):
name, routine = make_multi(op, size)
if hasattr(mod, name):
setattr(mod, name, routine)
@@ -13,7 +13,8 @@
@interface HCICommunicator: NSObject
+ (NSArray *) sendArbitraryCommand4:(uint8_t [])arg1 len:(uint8_t)arg2;
+ (void) sendHCICommand:(uint8_t [])arg1 len:(uint8_t)arg2;
+ (void) sendACLCommand:(uint8_t [])arg1 len:(uint8_t)arg2;
@end
@@ -12,14 +12,12 @@
@implementation HCICommunicator
+ (NSArray *)sendArbitraryCommand4:(uint8_t [])arg1 len:(uint8_t)arg2 {
+ (void) sendHCICommand:(uint8_t [])arg1 len:(uint8_t)arg2 {
NSData *data = [NSData dataWithBytes:arg1 length:arg2];
uint8_t *command = calloc(arg2, sizeof(uint8_t));
memcpy(command, [data bytes], arg2);
BluetoothHCIRequestID request = 0;
static uint8_t* output[255];
size_t outputSize = sizeof(output);
int error = BluetoothHCIRequestCreate(&request, 1000, nil, 0);
if (error) {
@@ -41,16 +39,32 @@
sleep(0x1);
BluetoothHCIRequestDelete(request);
uint8_t *result = calloc(255, sizeof(uint8_t));
memcpy(result, output, 255);
NSMutableArray *nsarr = [[NSMutableArray alloc] init];
for (int i = 0; i < 255; i++) {
[nsarr addObject:[NSNumber numberWithUnsignedChar:result[i]]];
}
+ (void) sendACLCommand:(uint8_t [])arg1 len:(uint8_t)arg2 {
NSData *data = [NSData dataWithBytes:arg1 length:arg2];
uint8_t *commandData = calloc(arg2, sizeof(uint8_t));
memcpy(commandData, [data bytes], arg2);
BluetoothHCIRequestID request = 0;
int error = BluetoothHCIRequestCreate(&request, 1000, nil, 0);
if (error) {
BluetoothHCIRequestDelete(request);
printf("Couldn't create error: %08x\n", error);
}
return nsarr;
// Read device handle from data
uint16_t handle = commandData[0];
error = BluetoothHCISendRawACLData(commandData, arg2, handle, request);
if (error) {
BluetoothHCIRequestDelete(request);
printf("Send HCI command Error: %08x\n", error);
}
sleep(0x1);
BluetoothHCIRequestDelete(request);
}
@end
@@ -92,7 +92,13 @@ extension HCIDelegate: IOBluetoothHostControllerDelegate {
let length: UInt8 = receiveBuffer[1]
// Send command to Bluetooth HCI Controller
HCICommunicator.sendArbitraryCommand4(&command, len: length)
let hci_type = [UInt8](receiveBuffer)[0]
if hci_type == 0x01 {
HCICommunicator.sendHCICommand(&command, len: length)
}
else {
HCICommunicator.sendACLCommand(&command, len: length)
}
}
}
print("Exiting...")
@@ -324,6 +324,11 @@ int BluetoothHCISendRawCommand(uint32_t request,
void *commandData,
size_t commmandSize);
int BluetoothHCISendRawACLData(void *commandData,
size_t commandSize,
uint32_t handle,
uint32_t request);
int BluetoothHCIDispatchUserClientRoutine(struct IOBluetoothHCIDispatchParams *arguments,
unsigned char *returnValue,
size_t *returnValueSize);
-2
View File
@@ -1,2 +0,0 @@
pwntools==3.12.2
pyelftools==0.24
+6 -1
View File
@@ -11,8 +11,13 @@ setup(name='internalblue',
license='MIT',
packages=['internalblue', 'internalblue/fw'],
install_requires=[
'pwntools',
'pwntools>=4.2.0.dev0',
'pyelftools',
],
extras_require={
"macoscore": ["pyobjc"],
"ipython": ["IPython"]
},
entry_points = {
'console_scripts': ['internalblue=internalblue.cli:internalblue_cli']
},
View File
+17
View File
@@ -0,0 +1,17 @@
import unittest
from internalblue.testcore import testCore
class DummyCoreTest(unittest.TestCase):
def setUp(self):
t = testCore(log_level='debug', data_directory='/tmp')
dev = t.device_list()[0]
reference = dev[0]
reference.interface = dev[1]
self.assert_(reference.connect(), 'Connect failed')
self.reference = reference
def tearDown(self):
self.reference.shutdown()
+12
View File
@@ -0,0 +1,12 @@
#!/bin/env sh
line=$(head -n 1 "$1")
if [[ $line == \#* ]] ;
then
python -m internalblue.cli --device hci0 --replay "$1" --commands "$(echo $line | tr -d "#"); quit" 2>&1 | grep AssertionError || exit 0 && exit 1
else
echo "Trace $1 has no command specified"
fi
+282
View File
@@ -0,0 +1,282 @@
from __future__ import print_function
from internalblue.cli import _parse_argv
from internalblue.hcicore import HCICore
import os
import nose
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
except ImportError:
pass
def test_info_heap_new():
dummy = [
{
"index": 0,
"capacity": 32,
"address": 2100380,
"next": 2100412,
"memory_size": 1152,
"buffer_list": 2190960,
"memory": 2190864,
"buffer_size": 32,
"buffer_headers": {
2191872: 2134443254,
2191620: 2037880954,
2191368: 375085499,
2191116: 3147300663,
2190864: 0,
2191764: 264196083,
2191512: 2509895076,
2191260: 2520551584,
2191008: 0,
2191908: 1846542368,
2191656: 1757769142,
2191404: 3932721686,
2191152: 2191184,
2190900: 28735,
2191800: 2840650003,
2191548: 1443923039,
2191296: 1489683938,
2191044: 4066066958,
2191944: 1913651233,
2191692: 152195353,
2191440: 2191472,
2191188: 1557416373,
2190936: 302056974,
2191836: 649087106,
2191584: 3228135896,
2191332: 3061215438,
2191080: 720823376,
2191980: 2196903397,
2191728: 2191760,
2191476: 2016717863,
2191224: 733933656,
2190972: 101581052
},
"list_length": 28
},
{
"index": 1,
"capacity": 50,
"address": 2100412,
"next": 2100444,
"memory_size": 5000,
"buffer_list": 2191888,
"memory": 2191888,
"buffer_size": 96,
"buffer_headers": {
2194688: 2418054699,
2196288: 1950181917,
2192388: 998902997,
2193288: 1237870693,
2196588: 3682344019,
2194188: 3476501705,
2191888: 2191984,
2195288: 1169168150,
2192788: 733035576,
2193688: 212170382,
2195588: 4256985711,
2194588: 2553343043,
2196688: 2197224,
2192288: 1364917638,
2195888: 19938058,
2193188: 1183181508,
2194088: 2389621397,
2196188: 1101316817,
2194988: 4119138959,
2192688: 3404258821,
2196488: 2957618219,
2193588: 1015303433,
2194488: 1542989588,
2195188: 334177442,
2192188: 3048389179,
2193088: 4249806944,
2195488: 1476670297,
2193988: 4205996809,
2196788: 0,
2194888: 1063521161,
2195788: 1587397832,
2192588: 3951930416,
2193488: 3182543110,
2196088: 1404536822,
2194388: 3962928810,
2192088: 1508747568,
2196388: 2481150443,
2192988: 3794218756,
2193888: 2230011074,
2195088: 2388733849,
2194788: 319481313,
2192488: 1066099460,
2195388: 2397324227,
2193388: 3268540448,
2194288: 2194384,
2195688: 443293108,
2191988: 3365837461,
2192888: 2725717105,
2195988: 954670552,
2193788: 2274473962
},
"list_length": 50
},
{
"index": 2,
"capacity": 12,
"address": 2100444,
"next": 2169260,
"memory_size": 3264,
"buffer_list": 2196688,
"memory": 2196688,
"buffer_size": 268,
"buffer_headers": {
2196960: 1868719728,
2198048: 2301952667,
2197504: 2764580300,
2198592: 4031749240,
2199408: 3141828370,
2199680: 2673196138,
2197776: 655413012,
2196688: 2197224,
2198864: 483218198,
2199136: 2070409995,
2197232: 4269595008,
2198320: 2960663615
},
"list_length": 11
},
{
"index": 3,
"capacity": 4,
"address": 2169260,
"next": 2169292,
"memory_size": 4288,
"buffer_list": 2199904,
"memory": 2199904,
"buffer_size": 1068,
"buffer_headers": {
2199904: 2200972,
2200976: 3538041113,
2202048: 1981831315,
2203120: 2664647264
},
"list_length": 4
},
{
"index": 4,
"capacity": 16,
"address": 2169292,
"next": 2169324,
"memory_size": 17536,
"buffer_list": 2204176,
"memory": 2204176,
"buffer_size": 1092,
"buffer_headers": {
2206368: 3081486871,
2208560: 2201211482,
2218424: 1142812043,
2210752: 1735894938,
2219520: 1997110991,
2207464: 3467810309,
2220616: 3465059190,
2217328: 3406578824,
2215136: 2543784863,
2204176: 2205268,
2209656: 3726451979,
2214040: 3051833507,
2211848: 3382482014,
2205272: 2465189202,
2212944: 2900433384,
2216232: 619500542
},
"list_length": 16
},
{
"index": 5,
"capacity": 15,
"address": 2169324,
"next": 2169356,
"memory_size": 4020,
"buffer_list": 2221648,
"memory": 2221648,
"buffer_size": 264,
"buffer_headers": {
2222720: 4187811300,
2223792: 71320053,
2223524: 2131726092,
2222184: 983003111,
2224060: 1514897371,
2222988: 2920869383,
2225132: 670722248,
2225400: 4011899155,
2221648: 2221912,
2224328: 1327684221,
2222452: 1691084254,
2223256: 2278527172,
2224596: 3213868993,
2221916: 2666878639,
2224864: 4293236507
},
"list_length": 15
},
{
"index": 6,
"capacity": 15,
"address": 2169356,
"next": 0,
"memory_size": 4020,
"buffer_list": 2225608,
"memory": 2225608,
"buffer_size": 264,
"buffer_headers": {
2226144: 2468503925,
2228288: 3769100033,
2226948: 3003019165,
2225608: 2225872,
2228556: 1848533574,
2226412: 19831529,
2229360: 3069868169,
2227216: 2022414238,
2227752: 2727841579,
2228824: 1909490602,
2225876: 2300688060,
2226680: 210906155,
2228020: 3166977216,
2227484: 2262736138,
2229092: 1991768492
},
"list_length": 15
}
]
trace = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'traces/hcicore/dictionary_tests/info_heap_new.trace')
args = _parse_argv('')
args.device = 'adb_replay'
args.replay = trace
data_directory = os.path.expanduser('~') + '/.internalblue'
if not os.path.exists(data_directory):
os.mkdir(data_directory)
from internalblue.socket_hooks import hook, ReplaySocket
hook(HCICore, ReplaySocket, filename=args.replay)
connection_methods = [HCICore(log_level='info', data_directory=data_directory, replay=True)]
devices = [] # type: List[DeviceTuple]
devices = connection_methods[0].device_list()
device = devices[0]
reference = device[0]
reference.interface = device[1]
reference.connect()
information = reference.readHeapInformation()
print(information)
nose.tools.assert_equal(information, dummy)
reference.shutdown()
+234
View File
@@ -0,0 +1,234 @@
from __future__ import print_function
from internalblue.cli import _parse_argv
from internalblue.adbcore import ADBCore
import os
import nose
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
except ImportError:
pass
def test_info_heap_old():
dummy = [
{
'index':0,
'buffer_headers': {
2194080: 0,
2193828: 2121160,
2193864: 2194008,
2193900: 2194044,
2193936: 2193864,
2193972: 2121160,
2194008: 2193900,
2194044: 2194080
},
'capacity': 8,
'address': 2121160,
'next': 2121208,
'memory_size': 288,
'waitlist_length': 0,
'buffer_list': 2193828,
'memory': 2193828,
'buffer_size': 32,
'prev': 2157672,
'list_length': 7,
'thread_waitlist': 0
},
{
'index': 1,
'buffer_headers': {
2194592: 0,
2194116: 2194184,
2194184: 2194252,
2194252: 2194320,
2194320: 2194388,
2194388: 2194456,
2194456: 2194524,
2194524: 2194592
},
'capacity': 8,
'address': 2121208,
'next': 2121256,
'memory_size': 544,
'waitlist_length': 0,
'buffer_list': 2194184,
'memory': 2194116,
'buffer_size': 64,
'prev': 2121160,
'list_length': 7,
'thread_waitlist': 0
},
{
'index': 2,
'buffer_headers': {
2196000: 2196268,
2197072: 0,
2194660: 2194928,
2195464: 2195732,
2196268: 2196536,
2194928: 2195196,
2195732: 2196000,
2196536: 2196804,
2196804: 2197072,
2195196: 2195464
},
'capacity': 10,
'address': 2121256,
'next': 2121352,
'memory_size': 2680,
'waitlist_length': 0,
'buffer_list': 2194660,
'memory': 2194660,
'buffer_size': 264,
'prev': 2121208,
'list_length': 10,
'thread_waitlist': 0
},
{
'index': 3,
'buffer_headers': {
2214480: 2215548,
2215548: 2216616,
2216616: 0,
2213412: 2214480
},
'capacity': 4,
'address': 2121352,
'next': 2121304,
'memory_size': 4272,
'waitlist_length': 0,
'buffer_list': 2213412,
'memory': 2213412,
'buffer_size': 1064,
'prev': 2121256,
'list_length': 4,
'thread_waitlist': 0
},
{
'index': 4,
'buffer_headers': {
2234124: 0,
2231932: 2233028,
2224260: 2225356,
2219876: 2220972,
2226452: 2227548,
2223164: 2224260,
2228644: 2229740,
2220972: 2222068,
2225356: 2226452,
2230836: 2231932,
2233028: 2234124,
2222068: 2223164,
2227548: 2228644,
2217684: 2218780,
2218780: 2219876,
2229740: 2230836
},
'capacity': 16,
'address': 2121304,
'next': 2157624,
'memory_size': 17536,
'waitlist_length': 0,
'buffer_list': 2217684,
'memory': 2217684,
'buffer_size': 1092,
'prev': 2121352,
'list_length': 16,
'thread_waitlist': 0
},
{
'index': 5,
'buffer_headers': {
2235264: 2235308,
2235616: 2235660,
2235396: 2235440,
2235528: 2235572,
2235660: 2235704,
2235308: 2235352,
2235440: 2235484,
2235704: 2235748,
2235792: 2235836,
2235220: 2235264,
2235748: 2235792,
2235352: 2235396,
2235572: 2235616,
2235836: 0,
2235484: 2235528
},
'capacity': 15,
'address': 2157624,
'next': 2157672,
'memory_size': 660,
'waitlist_length': 0,
'buffer_list': 2235220,
'memory': 2235220,
'buffer_size': 40,
'prev': 2121304,
'list_length': 15,
'thread_waitlist': 0
},
{
'index': 6,
'buffer_headers': {
2236096: 2236132,
2236240: 2236276,
2236132: 2236168,
2236384: 0,
2235880: 2235916,
2236204: 2236240,
2236348: 2236384,
2235916: 2235952,
2235952: 2235988,
2236168: 2236204,
2236312: 2236348,
2235988: 2236024,
2236024: 2236060,
2236276: 2236312,
2236060: 2236096
},
'capacity': 15,
'address': 2157672,
'next': 2121160,
'memory_size': 540,
'waitlist_length': 0,
'buffer_list': 2235880,
'memory': 2235880,
'buffer_size': 32,
'prev': 2157624,
'list_length': 15,
'thread_waitlist': 0
}]
trace = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'traces/adbcore/dictionary_tests/info_heap_old.trace')
args = _parse_argv('')
args.device = 'adb_replay'
args.replay = trace
data_directory = os.path.expanduser('~') + '/.internalblue'
if not os.path.exists(data_directory):
os.mkdir(data_directory)
from internalblue.socket_hooks import hook, ReplaySocket
hook(ADBCore, ReplaySocket, filename=args.replay)
connection_methods = [ADBCore(log_level='info', data_directory=data_directory, replay=True)]
devices = [] # type: List[DeviceTuple]
devices = connection_methods[0].device_list()
device = devices[0]
reference = device[0]
reference.interface = device[1]
reference.connect()
information = reference.readHeapInformation()
print(information)
nose.tools.assert_equal(information, dummy)
reference.shutdown()
+52
View File
@@ -0,0 +1,52 @@
from __future__ import print_function
from internalblue.cli import _parse_argv
from internalblue.adbcore import ADBCore
from internalblue.objects.connection_information import ConnectionInformation
import os
import nose
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
from internalblue import DeviceTuple
except ImportError:
pass
def test_info_conn_7():
dummy = ConnectionInformation(7, bytearray.fromhex('0023023a1a2e'), 0, True, 0xc,
bytearray.fromhex('e98a5eaaff39ecb5ce4447590dfb73a4'), 16,
bytearray.fromhex('dbea2d9c47bc1aa6afe664ff31591aa6'), -87,
bytearray.fromhex('0a00c821ffff8ffa'), bytearray.fromhex('9bff598701000000'),
bytearray.fromhex('00'))
trace = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'traces/adbcore/dictionary_tests/info_conn_7.trace')
args = _parse_argv('')
args.device = 'adb_replay'
args.replay = trace
data_directory = os.path.expanduser('~') + '/.internalblue'
if not os.path.exists(data_directory):
os.mkdir(data_directory)
from internalblue.socket_hooks import hook, ReplaySocket
hook(ADBCore, ReplaySocket, filename=args.replay)
connection_methods = [ADBCore(log_level='info', data_directory=data_directory, replay=True)]
devices = [] # type: List[DeviceTuple]
devices = connection_methods[0].device_list()
device = devices[0]
reference = device[0]
reference.interface = device[1]
reference.connect()
information = reference.readConnectionInformation(7)
print(information)
nose.tools.assert_dict_equal(vars(information), vars(dummy))
reference.shutdown()
+50
View File
@@ -0,0 +1,50 @@
from __future__ import print_function
from internalblue.cli import _parse_argv
from internalblue.adbcore import ADBCore
from internalblue.objects.connection_information import ConnectionInformation
import os
import nose
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
except ImportError:
pass
def test_info_conn_9():
dummy = ConnectionInformation(9, bytearray.fromhex('000000000000'), 0, False, 12,
bytearray.fromhex('00000000000000000000000000000000'), 0, b'', -87,
bytearray.fromhex('0000000000000000'),
bytearray.fromhex('0000000000000000'), bytearray.fromhex('00'))
trace = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'traces/adbcore/dictionary_tests/info_conn_9.trace')
args = _parse_argv('')
args.device = 'adb_replay'
args.replay = trace
data_directory = os.path.expanduser('~') + '/.internalblue'
if not os.path.exists(data_directory):
os.mkdir(data_directory)
from internalblue.socket_hooks import hook, ReplaySocket
hook(ADBCore, ReplaySocket, filename=args.replay)
connection_methods = [ADBCore(log_level='info', data_directory=data_directory, replay=True)]
devices = [] # type: List[DeviceTuple]
devices = connection_methods[0].device_list()
device = devices[0]
reference = device[0]
reference.interface = device[1]
reference.connect()
information = reference.readConnectionInformation(9)
print(information)
nose.tools.assert_dict_equal(vars(information), vars(dummy))
reference.shutdown()
+63
View File
@@ -0,0 +1,63 @@
from __future__ import print_function
from internalblue.cli import _parse_argv
from internalblue.adbcore import ADBCore
from internalblue.objects.queue_element import QueueElement
import os
import nose
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
except ImportError:
pass
def test_info_queue():
dummy = [
QueueElement(0, 2123152, 4, 16, 0, 16, 2123208, 2123272, 2123268, 2123268, 0, 0, 2123332, 2141676, 'tran_HCIEvent'),
QueueElement(1, 2123332, 8, 31, 0, 31, 2123388, 2123636, 2123436, 2123436, 0, 0, 2123636, 2123152, 'tran_ACLData'),
QueueElement(2, 2123636, 4, 3, 0, 3, 2123692, 2123704, 2123692, 2123692, 0, 0, 2123704, 2123332, 'tran_SCOData'),
QueueElement(3, 2123704, 4, 31, 0, 31, 2123760, 2123884, 2123760, 2123760, 0, 0, 2123884, 2123636, 'tran_UartBridgeNonHCIEvent'),
QueueElement(4, 2123884, 4, 20, 0, 20, 2123940, 2124020, 2124000, 2124000, 0, 0, 2124020, 2123704, 'tran_DiagData'),
QueueElement(5, 2124020, 8, 8, 0, 8, 2124076, 2124140, 2124076, 2124076, 0, 0, 2124140, 2123884, 'tran_HIDUsbKBEvt'),
QueueElement(6, 2124140, 8, 6, 0, 6, 2124196, 2124244, 2124196, 2124196, 0, 0, 2124244, 2124020, 'tran_HIDUsbMSEvt'),
QueueElement(7, 2124244, 8, 1, 0, 1, 2100496, 2100504, 2100496, 2100496, 0, 0, 2124300, 2124140, 'tran_HIDUsbMSCtrl'),
QueueElement(8, 2124300, 8, 1, 0, 1, 2100504, 2100512, 2100504, 2100504, 0, 0, 2124356, 2124244, 'tran_HIDUsbKBCtrl'),
QueueElement(9, 2124356, 8, 32, 0, 32, 2124412, 2124668, 2124412, 2124412, 0, 0, 2110352, 2124300, 'tran_HidAuxData'),
QueueElement(10, 2110352, 8, 12, 0, 12, 2192284, 2192380, 2192300, 2192300, 0, 0, 2120560, 2124356, 'lm_Cmd'),
QueueElement(11, 2120560, 4, 8, 0, 8, 2192380, 2192412, 2192400, 2192400, 0, 0, 2110408, 2110352, 'hci_HciCommand'),
QueueElement(12, 2110408, 8, 19, 0, 19, 2192412, 2192564, 2192412, 2192412, 0, 0, 2118068, 2120560, 'lm_deferredAction'),
QueueElement(13, 2118068, 8, 6, 0, 6, 2192564, 2192612, 2192564, 2192564, 0, 0, 2141588, 2110408, 'lrmmsm_cmd'),
QueueElement(14, 2141588, 4, 8, 0, 8, 2141644, 2141676, 2141644, 2141644, 0, 0, 2141676, 2118068, 'liteHostEvent'),
QueueElement(15, 2141676, 4, 16, 0, 16, 2141732, 2141796, 2141732, 2141732, 0, 0, 2123152, 2141588, 'litehostRcvdL2capData')
]
trace = os.path.join(os.path.dirname(os.path.abspath(__file__)),
'traces/adbcore/dictionary_tests/info_queue.trace')
args = _parse_argv('')
args.device = 'adb_replay'
args.replay = trace
data_directory = os.path.expanduser('~') + '/.internalblue'
if not os.path.exists(data_directory):
os.mkdir(data_directory)
from internalblue.socket_hooks import hook, ReplaySocket
hook(ADBCore, ReplaySocket, filename=args.replay)
connection_methods = [ADBCore(log_level='info', data_directory=data_directory, replay=True)]
devices = [] # type: List[DeviceTuple]
devices = connection_methods[0].device_list()
device = devices[0]
reference = device[0]
reference.interface = device[1]
reference.connect()
information = reference.readQueueInformation()
print(information)
nose.tools.assert_equal([vars(element) for element in information], [vars(element) for element in dummy])
reference.shutdown()
+63
View File
@@ -0,0 +1,63 @@
from __future__ import print_function
from __future__ import absolute_import
from .testwrapper import trace_test, get_trace_path_cmd_tuple
import os
tracedir = os.path.dirname(__file__)
#cores = ['macoscore', 'ioscore', 'adbcore', 'hcicore']
import unittest
def generate_test_suite_from_traces():
def generate_test_from_file(core, tracefile):
tracepath, cmd = get_trace_path_cmd_tuple(core, tracefile)
def test():
print("Running test %s " % (tracefile[:-6]))
trace_test(core, tracepath, cmd)
# Rename the function to the tracefile name without .trace suffix
test.__name__ = tracefile[:-6]
if cmd:
return test
else:
return unittest.skip("No command specified in trace {}".format(tracepath))(test)
suite = unittest.TestSuite()
for core in os.listdir(tracedir):
if os.path.isdir(os.path.join(tracedir,core)):
core_suite = unittest.TestSuite()
for tracefile in os.listdir(os.path.join(tracedir, core)):
if tracefile.endswith(".trace"):
core_suite.addTest(
unittest.FunctionTestCase(generate_test_from_file(core, tracefile), description=tracefile))
suite.addTest(core_suite)
return suite
# test_all_traces()
def load_tests(loader, standard_tests, n):
"""
This method is called by test frameworks to supply a testsuite instead of the test framework collecting them itself.
This allows use to automatically generate a proper test for each trace in the subdirectory that has a command specified.
Those tests are then run by the framework in the usual way which integrates with IDEs
TODO: Document PyCharm Setup
"""
trace_suite = generate_test_suite_from_traces()
return trace_suite
if __name__ == '__main__':
suite = generate_test_suite_from_traces()
unittest.TextTestRunner().run(suite)
View File
@@ -0,0 +1,21 @@
TX 010300011000
RX 0000000400000004000000020000000000e26b46e2c309cc
RX 01011000
RX 0000000f0000000f000000030000000000e26b46e2c3274f
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc05b0402000fb
RX 000000090000000900000002
RX 0000000000e26b46e2d06c12
RX 014dfc05b0402000fb
RX 0000010200000102000000030000000000e26b46
RX e2d093f7
RX 040eff014dfc0007000000000000000000000000000007000000000000000000007711572d980700000000000010002e1a3a022300feb10a00c821ffff8ffa9bff59870100000000000000000000000000000000000000000000000000008d0500fa0a401f0000401f00000c001adddbea2d9c47bc1aa6afe664ff31591aa6e98a5eaaff39ecb5ce4447590dfb73a4161203cd6e77be6a4bcfb3ee52d3e2c40000000028000404000000130000001000000000020001003c002003001800009c7e1200b00402000200000002000101010200000000000000000000ffffffffffffffff0000000100000000000005f8ff001add0020000000000015d1000000000000
TX 0108004dfc05ab41200051
RX 000000090000000900000002
RX 0000000000e26b46e2d18faa
RX 014dfc05ab41200051
RX 0000005800000058000000030000000000e26b46e2d1ade2
RX 040e55014dfc000000000000000000000000000000000000a4000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000001000000
Socket closed
@@ -0,0 +1,24 @@
#info connections
TX 010300011000
RX 0000000400000004000000020000000000e269c211af9287
RX 01011000
RX 0000000f0000000f000000030000000000e269c211afc606
RX 040e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc0548432000fb
RX 0000000900000009000000020000000000e269c2
RX 11cde3be
RX 014dfc0548432000fb
RX 00000102
RX 000001020000000300000000
RX 00e269c211ce175c
RX 04
RX 0eff014dfc000900000000000000000000000000000000000000000000000000777700c91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000007d0000007d00000c001eff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000100000000000000f0ff0000000000000000000001c4000000000000
TX 0108004dfc054344200051
RX 0000000900000009000000020000000000e269c2
RX 11cf5a52
RX 014dfc054344200051
RX 000000580000005800000003
RX 0000000000e269c211cf8917
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Socket closed
@@ -0,0 +1,685 @@
# info heap
TX 010300011000
RX 0000000400000004000000020000000000e269c200a6dc56
RX 01011000
RX 0000000f0000000f000000030000000000e269c2
RX 00a717ec
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc059430200004
RX 000000030000000300000003
RX 0000000000e269c200a87965
RX 07f001
RX 00000009000000090000000200000000
RX 00e269c200a8e193
RX 01
RX 4dfc059430200004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00a918e2
RX 040e08014dfc00c85d2000
TX 0108004dfc05c85d200030
RX 000000090000000900000002
RX 0000000000e269c200aab793
RX 014dfc05c85d200030
RX 00000037
RX 000000370000000300000000
RX 00e269c200aaf0ec
RX 04
RX 0e34014dfc00434f4c42000000000700000008000000a4792100a479210020010000200000000000000000000000f85d200068ec2000
TX 0108004dfc05a479210004
RX 000000090000000900000002
RX 0000000000e269c200acb1ba
RX 014dfc05a479210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200ace5c2
RX 04
RX 0e08014dfc00c85d2000
TX 0108004dfc05c879210004
RX 000000090000000900000002
RX 0000000000e269c200ae2501
RX 014dfc05c879210004
RX 0000000b0000000b0000000300000000
RX 00e269c200ae5915
RX 04
RX 0e08014dfc00587a2100
TX 0108004dfc05ec79210004
RX 0000000900000009000000020000000000e269c200b01eae
RX 01
RX 4dfc05ec79210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200b04d6c
RX 04
RX 0e08014dfc007c7a2100
TX 0108004dfc05107a210004
RX 0000000900000009000000020000000000e269c200b19061
RX 014dfc05107a210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200b1c4f3
RX 04
RX 0e08014dfc00c8792100
TX 0108004dfc05347a210004
RX 0000000900000009000000020000000000e269c200b38d00
RX 01
RX 4dfc05347a210004
RX 0000000b0000000b
RX 000000030000000000e269c200b3bbaa
RX 040e08014dfc00c85d2000
TX 0108004dfc05587a210004
RX 0000000900000009000000020000000000e269c200b58252
RX 014dfc05587a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00b5b18b
RX 040e08014dfc00ec792100
TX 0108004dfc057c7a210004
RX 0000000900000009000000020000000000e269c200b6f455
RX 014dfc057c7a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00b728c4
RX 040e08014dfc00a07a2100
TX 0108004dfc05a07a210004
RX 000000090000000900000002
RX 0000000000e269c200b8f1d6
RX 014dfc05a07a210004
RX 0000000b0000000b000000030000000000e269c2
RX 00b92612
RX 040e08014dfc0000000000
TX 0108004dfc05f85d200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ba65be
RX 014dfc05f85d200030
RX 00000037000000370000000300000000
RX 00e269c200ba9b76
RX 04
RX 0e34014dfc00434f4c42000000000700000008000000087b2100c47a210020020000400000000000000000000000285e2000c85d2000
TX 0108004dfc05c47a210004
RX 000000090000000900000002
RX 0000000000e269c200bc6390
RX 014dfc05c47a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00bc987e
RX 04
RX 0e08014dfc00087b2100
TX 0108004dfc05087b210004
RX 0000000900000009000000020000000000e269c2
RX 00bdd708
RX 014dfc05087b210004
RX 0000000b0000000b0000000300000000
RX 00e269c200be075f
RX 04
RX 0e08014dfc004c7b2100
TX 0108004dfc054c7b210004
RX 0000000900000009000000020000000000e269c200bfd07f
RX 014dfc054c7b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00bfffe2
RX 040e08014dfc00907b2100
TX 0108004dfc05907b210004
RX 000000090000000900000002
RX 0000000000e269c200c1c264
RX 014dfc05907b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c1fba1
RX 040e08014dfc00d47b2100
TX 0108004dfc05d47b210004
RX 000000090000000900000002
RX 0000000000e269c200c339f3
RX 014dfc05d47b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c36f64
RX 040e08014dfc00187c2100
TX 0108004dfc05187c210004
RX 0000000900000009000000020000000000e269c200c53386
RX 014dfc05187c210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c56249
RX 040e08014dfc005c7c2100
TX 0108004dfc055c7c210004
RX 0000000900000009000000020000000000e269c2
RX 00c6a64c
RX 014dfc055c7c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200c6d51e
RX 04
RX 0e08014dfc00a07c2100
TX 0108004dfc05a07c210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00c8a176
RX 014dfc05a07c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200c8daef
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc05285e200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ca1661
RX 014dfc05285e200030
RX 000000370000003700000003
RX 0000000000e269c200ca4c0b
RX 040e34014dfc00434f4c42000000000a0000000a000000e47c2100e47c2100780a0000080100000000000000000000885e2000f85d2000
TX 0108004dfc05e47c210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00cc13aa
RX 014dfc05e47c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200cc49c8
RX 04
RX 0e08014dfc00f07d2100
TX 0108004dfc05f07d210004
RX 00000009000000090000000200000000
RX 00e269c200ce084a
RX 014dfc05f07d210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00ce3d02
RX 040e08014dfc00fc7e2100
TX 0108004dfc05fc7e210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00cf7abc
RX 014dfc05fc7e210004
RX 0000000b0000000b0000000300000000
RX 00e269c200cfafff
RX 04
RX 0e08014dfc0008802100
TX 0108004dfc050880210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00d1718e
RX 014dfc050880210004
RX 0000000b0000000b0000000300000000
RX 00e269c200d1ad02
RX 040e08014dfc0014812100
TX 0108004dfc051481210004
RX 0000000900000009000000020000000000e269c200d2e49d
RX 01
RX 4dfc051481210004
RX 0000000b0000000b
RX 000000030000000000e269c200d313fc
RX 040e08014dfc0020822100
TX 0108004dfc052082210004
RX 0000000900000009000000020000000000e269c2
RX 00d4dfc6
RX 014dfc052082210004
RX 0000000b0000000b00000003
RX 0000000000e269c200d50e59
RX 040e08014dfc002c832100
TX 0108004dfc052c83210004
RX 00000009000000090000000200000000
RX 00e269c200d65308
RX 01
RX 4dfc052c83210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00d68806
RX 040e08014dfc0038842100
TX 0108004dfc053884210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00d84aba
RX 014dfc053884210004
RX 0000000b0000000b00000003
RX 0000000000e269c200d88584
RX 040e08014dfc0044852100
TX 0108004dfc054485210004
RX 0000000900000009000000020000000000e269c2
RX 00da42d6
RX 014dfc054485210004
RX 0000000b0000000b00000003
RX 0000000000e269c200da7651
RX 040e08014dfc0050862100
TX 0108004dfc055086210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00dbba9e
RX 014dfc055086210004
RX 0000000b0000000b00000003
RX 0000000000e269c200dbf538
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc05885e200030
RX 00000009000000090000000200000000
RX 00e269c200ddb037
RX 01
RX 4dfc05885e200030
RX 000000370000003700000003
RX 0000000000e269c200dde9b6
RX 040e34014dfc00434f4c4200000000040000000400000024c6210024c62100b0100000280400000000000000000000585e2000285e2000
TX 0108004dfc0524c6210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00df268a
RX 014dfc0524c6210004
RX 0000000b0000000b0000000300000000
RX 00e269c200df5cd7
RX 040e08014dfc0050ca2100
TX 0108004dfc0550ca210004
RX 0000000900000009000000020000000000e269c2
RX 00e11eb6
RX 01
RX 4dfc0550ca210004
RX 0000000b0000000b00000003
RX 0000000000e269c200e15819
RX 040e08014dfc007cce2100
TX 0108004dfc057cce210004
RX 00000009000000090000000200000000
RX 00e269c200e29334
RX 01
RX 4dfc057cce210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00e2c73e
RX 040e08014dfc00a8d22100
TX 0108004dfc05a8d2210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e4925e
RX 014dfc05a8d2210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200e4c673
RX 040e08014dfc0000000000
TX 0108004dfc05585e200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e5ff65
RX 014dfc05585e200030
RX 000000370000003700000003
RX 0000000000e269c200e63326
RX 040e34014dfc00434f4c42000000001000000010000000d4d62100d4d621008044000044040000000000000000000038ec2000885e2000
TX 0108004dfc05d4d6210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e7fcce
RX 014dfc05d4d6210004
RX 0000000b0000000b0000000300000000
RX 00e269c200e8313f
RX 040e08014dfc001cdb2100
TX 0108004dfc051cdb210004
RX 0000000900000009000000020000000000e269c200e9f3c0
RX 014dfc051cdb210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00ea223f
RX 040e08014dfc0064df2100
TX 0108004dfc0564df210004
RX 00000009000000090000000200000000
RX 00e269c200eb6947
RX 01
RX 4dfc0564df210004
RX 0000000b0000000b00000003
RX 0000000000e269c200eb9dc8
RX 04
RX 0e08014dfc00ace32100
TX 0108004dfc05ace3210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ed6025
RX 014dfc05ace3210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00edb820
RX 040e08014dfc00f4e72100
TX 0108004dfc05f4e7210004
RX 00000009000000090000000200000000
RX 00e269c200eeaa84
RX 014dfc05f4e7210004
RX 0000000b0000000b000000030000000000e269c200eeb23c
RX 04
RX 0e08014dfc003cec2100
TX 0108004dfc053cec210004
RX 0000000900000009
RX 000000020000000000e269c200ef25f0
RX 01
RX 4dfc053cec210004
RX 0000000b
RX 0000000b000000030000000000e269c200ef2e26
RX 04
RX 0e08014dfc0084f02100
TX 0108004dfc0584f0210004
RX 0000000900000009000000020000000000e269c200efa285
RX 014dfc0584f0210004
RX 0000000b
RX 0000000b000000030000000000e269c200efa979
RX 040e08014dfc00ccf42100
TX 0108004dfc05ccf4210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00f0207c
RX 014dfc05ccf4210004
RX 0000000b0000000b0000000300000000
RX 00e269c200f028c8
RX 04
RX 0e08014dfc0014f92100
TX 0108004dfc0514f9210004
RX 0000000900000009000000020000000000e269c200f0b8fd
RX 014dfc0514f9210004
RX 0000000b0000000b0000000300000000
RX 00e269c200f0bf4a
RX 040e08014dfc005cfd2100
TX 0108004dfc055cfd210004
RX 00000009000000090000000200000000
RX 00e269c200f11c7d
RX 01
RX 4dfc055cfd210004
RX 0000000b0000000b00000003
RX 0000000000e269c200f12aa4
RX 040e08014dfc00a4012200
TX 0108004dfc05a401220004
RX 0000000900000009000000020000000000e269c200f1946c
RX 014dfc05a401220004
RX 0000000b0000000b00000003
RX 0000000000e269c200f19f40
RX 040e08014dfc00ec052200
TX 0108004dfc05ec05220004
RX 0000000900000009000000020000000000e269c200f20f44
RX 01
RX 4dfc05ec05220004
RX 0000000b0000000b00000003
RX 0000000000e269c200f21b6a
RX 04
RX 0e08014dfc00340a2200
TX 0108004dfc05340a220004
RX 0000000900000009000000020000000000e269c200f29be7
RX 014dfc05340a220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00f2b3bd
RX 040e08014dfc007c0e2200
TX 0108004dfc057c0e220004
RX 00000009
RX 00000009
RX 0000000200000000
RX 00e269c200f3a7c6
RX 01
RX 4dfc057c0e220004
RX 0000000b0000000b000000030000000000e269c2
RX 00f4951f
RX 040e08014dfc00c4122200
TX 0108004dfc05c412220004
RX 0000000900000009
RX 000000020000000000e269c200f637e5
RX 014dfc05c412220004
RX 0000000b0000000b000000030000000000e269c200f63f91
RX 040e08014dfc000c172200
TX 0108004dfc050c17220004
RX 00000009
RX 000000090000000200000000
RX 00e269c200f6f156
RX 014dfc050c17220004
RX 0000000b0000000b0000000300000000
RX 00e269c200f6f966
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc0538ec200030
RX 00000009000000090000000200000000
RX 00e269c200f76de0
RX 014dfc0538ec200030
RX 0000003700000037000000030000000000e269c200f7757d
RX 040e34014dfc00434f4c42000000000f0000000f000000541b2200541b22009402000028000000000000000000000068ec2000585e2000
TX 0108004dfc05541b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00f8133d
RX 014dfc05541b220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200f83a20
RX 04
RX 0e08014dfc00801b2200
TX 0108004dfc05801b220004
RX 0000000900000009000000020000000000e269c200f909ee
RX 014dfc05801b220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200f935e2
RX 04
RX 0e08014dfc00ac1b2200
TX 0108004dfc05ac1b220004
RX 0000000900000009000000020000000000e269c2
RX 00fb146c
RX 014dfc05ac1b220004
RX 0000000b
RX 0000000b00000003
RX 0000000000e269c200fb4327
RX 040e08014dfc00d81b2200
TX 0108004dfc05d81b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00fd0682
RX 014dfc05d81b220004
RX 0000000b0000000b0000000300000000
RX 00e269c200fd3fca
RX 04
RX 0e08014dfc00041c2200
TX 0108004dfc05041c220004
RX 00000009000000090000000200000000
RX 00e269c200fe7d8e
RX 01
RX 4dfc05041c220004
RX 0000000b0000000b00000003
RX 0000000000e269c200feb0d4
RX 040e08014dfc00301c2200
TX 0108004dfc05301c220004
RX 0000000900000009000000020000000000e269c2
RX 010074cc
RX 014dfc05301c220004
RX 0000000b0000000b0000000300000000
RX 00e269c20100a76b
RX 04
RX 0e08014dfc005c1c2200
TX 0108004dfc055c1c220004
RX 0000000900000009000000020000000000e269c20101eacb
RX 014dfc055c1c220004
RX 0000000b0000000b0000000300000000
RX 00e269c201021779
RX 04
RX 0e08014dfc00881c2200
TX 0108004dfc05881c220004
RX 0000000900000009000000020000000000e269c20103e6c3
RX 014dfc05881c220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201041515
RX 04
RX 0e08014dfc00b41c2200
TX 0108004dfc05b41c220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 01055aa2
RX 014dfc05b41c220004
RX 0000000b0000000b0000000300000000
RX 00e269c201058f0e
RX 040e08014dfc00e01c2200
TX 0108004dfc05e01c220004
RX 000000090000000900000002
RX 0000000000e269c201075199
RX 014dfc05e01c220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201078a8c
RX 04
RX 0e08014dfc000c1d2200
TX 0108004dfc050c1d220004
RX 0000000900000009000000020000000000e269c2
RX 010948a2
RX 014dfc050c1d220004
RX 0000000b0000000b0000000300000000
RX 00e269c201097c0d
RX 04
RX 0e08014dfc00381d2200
TX 0108004dfc05381d220004
RX 0000000900000009
RX 000000020000000000e269c2010ac2b3
RX 014dfc05381d220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2010afeef
RX 04
RX 0e08014dfc00641d2200
TX 0108004dfc05641d220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 010cbc41
RX 014dfc05641d220004
RX 0000000b0000000b00000003
RX 0000000000e269c2010cefe5
RX 040e08014dfc00901d2200
TX 0108004dfc05901d220004
RX 00000009000000090000000200000000
RX 00e269c2010e2df1
RX 01
RX 4dfc05901d220004
RX 0000000b0000000b00000003
RX 0000000000e269c2010e61ea
RX 040e08014dfc00bc1d2200
TX 0108004dfc05bc1d220004
RX 000000090000000900000002
RX 0000000000e269c20110231e
RX 014dfc05bc1d220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201105c92
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc0568ec200030
RX 0000000900000009000000020000000000e269c2
RX 01119816
RX 014dfc0568ec200030
RX 00000037000000370000000300000000
RX 00e269c20111c667
RX 04
RX 0e34014dfc00434f4c42000000000f0000000f000000e81d2200e81d22001c020000200000000000000000000000c85d200038ec2000
TX 0108004dfc05e81d220004
RX 00000009000000090000000200000000
RX 00e269c201138f25
RX 01
RX 4dfc05e81d220004
RX 0000000b0000000b
RX 000000030000000000e269c20113c768
RX 040e08014dfc000c1e2200
TX 0108004dfc050c1e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 011507e7
RX 014dfc050c1e220004
RX 0000000b0000000b0000000300000000
RX 00e269c201153d26
RX 04
RX 0e08014dfc00301e2200
TX 0108004dfc05301e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 0116fe0e
RX 014dfc05301e220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201173734
RX 04
RX 0e08014dfc00541e2200
TX 0108004dfc05541e220004
RX 0000000900000009000000020000000000e269c20118f296
RX 014dfc05541e220004
RX 0000000b0000000b
RX 000000030000000000e269c2011926ef
RX 040e08014dfc00781e2200
TX 0108004dfc05781e220004
RX 0000000900000009000000020000000000e269c2011a6bbe
RX 014dfc05781e220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2011a9958
RX 04
RX 0e08014dfc009c1e2200
TX 0108004dfc059c1e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 011c676b
RX 014dfc059c1e220004
RX 0000000b0000000b00000003
RX 0000000000e269c2011c9b6e
RX 040e08014dfc00c01e2200
TX 0108004dfc05c01e220004
RX 0000000900000009000000020000000000e269c2
RX 011dda94
RX 014dfc05c01e220004
RX 0000000b0000000b0000000300000000
RX 00e269c2011e0829
RX 04
RX 0e08014dfc00e41e2200
TX 0108004dfc05e41e220004
RX 0000000900000009000000020000000000e269c2011fd393
RX 014dfc05e41e220004
RX 0000000b0000000b
RX 0000000300000000
RX 00e269c201200234
RX 040e08014dfc00081f2200
TX 0108004dfc05081f220004
RX 0000000900000009000000020000000000e269c2
RX 012145f7
RX 014dfc05081f220004
RX 0000000b0000000b0000000300000000
RX 00e269c20121a431
RX 04
RX 0e08014dfc002c1f2200
TX 0108004dfc052c1f220004
RX 000000090000000900000002
RX 0000000000e269c201230eec
RX 014dfc052c1f220004
RX 0000000b0000000b0000000300000000
RX 00e269c201231658
RX 040e08014dfc00501f2200
TX 0108004dfc05501f220004
RX 0000000900000009
RX 000000020000000000e269c20124484f
RX 014dfc05501f220004
RX 0000000b0000000b0000000300000000
RX 00e269c201244f7a
RX 040e08014dfc00741f2200
TX 0108004dfc05741f220004
RX 00000009
RX 00000009000000020000000000e269c201250543
RX 01
RX 4dfc05741f220004
RX 0000000b0000000b000000030000000000e269c2
RX 01250d7b
RX 040e08014dfc00981f2200
TX 0108004dfc05981f220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 0125e492
RX 014dfc05981f220004
RX 0000000b0000000b00000003
RX 0000000000e269c201260ab3
RX 040e08014dfc00bc1f2200
TX 0108004dfc05bc1f220004
RX 0000000900000009000000020000000000e269c2
RX 01276da0
RX 014dfc05bc1f220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201279c46
RX 040e08014dfc00e01f2200
TX 0108004dfc05e01f220004
RX 0000000900000009000000020000000000e269c2
RX 0128e461
RX 014dfc05e01f220004
RX 0000000b0000000b00000003
RX 0000000000e269c2012914b3
RX 040e08014dfc0000000000
Socket closed
@@ -0,0 +1,148 @@
# info queue
TX 010300011000
RX 0000000400000004000000020000000000e269c2663770fc
RX 01011000
RX 0000000f0000000f000000030000000000e269c26637a4a7
RX 040e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc057c30200004
RX 00000003000000030000000300000000
RX 00e269c266390c8a
RX 07f001
RX 00000009
RX 000000090000000200000000
RX 00e269c2663974da
RX 01
RX 4dfc057c30200004
RX 0000000b0000000b
RX 000000030000000000e269c26639ac63
RX 040e08014dfc0090652000
TX 0108004dfc059065200038
RX 000000090000000900000002
RX 0000000000e269c2
RX 663b4f1a
RX 014dfc059065200038
RX 0000003f0000003f0000000300000000
RX 00e269c2663b83d8
RX 040e3c014dfc00554555510000000001000000100000000000000010000000c8652000086620000466200004662000000000000000000044662000ecad2000
TX 0108004dfc054466200038
RX 000000090000000900000002
RX 0000000000e269c2663d419c
RX 014dfc054466200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 663d7aab
RX 040e3c014dfc005545555100000000020000001f000000000000001f0000007c66200074672000ac662000ac66200000000000000000007467200090652000
TX 0108004dfc057467200038
RX 0000000900000009000000020000000000e269c2
RX 663ebb9e
RX 014dfc057467200038
RX 0000003f0000003f00000003
RX 0000000000e269c2663eeac6
RX 040e3c014dfc00554555510000000001000000030000000000000003000000ac672000b8672000ac672000ac6720000000000000000000b867200044662000
TX 0108004dfc05b867200038
RX 0000000900000009000000020000000000e269c26640af70
RX 01
RX 4dfc05b867200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 6640e3ed
RX 040e3c014dfc005545555100000000010000001f000000000000001f000000f06720006c682000f0672000f067200000000000000000006c68200074672000
TX 0108004dfc056c68200038
RX 0000000900000009000000020000000000e269c26642a534
RX 014dfc056c68200038
RX 0000003f
RX 0000003f0000000300000000
RX 00e269c26642d8cd
RX 04
RX 0e3c014dfc00554555510000000001000000140000000000000014000000a4682000f4682000e0682000e06820000000000000000000f4682000b8672000
TX 0108004dfc05f468200038
RX 0000000900000009000000020000000000e269c266441bec
RX 014dfc05f468200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6644504f
RX 040e3c014dfc005545555100000000020000000800000000000000080000002c6920006c6920002c6920002c69200000000000000000006c6920006c682000
TX 0108004dfc056c69200038
RX 000000090000000900000002
RX 0000000000e269c2
RX 664611cc
RX 014dfc056c69200038
RX 0000003f
RX 0000003f0000000300000000
RX 00e269c266464b12
RX 04
RX 0e3c014dfc00554555510000000002000000060000000000000006000000a4692000d4692000a4692000a46920000000000000000000d4692000f4682000
TX 0108004dfc05d469200038
RX 00000009000000090000000200000000
RX 00e269c266478916
RX 01
RX 4dfc05d469200038
RX 0000003f0000003f00000003
RX 0000000000e269c26647be39
RX 040e3c014dfc00554555510000000002000000010000000000000001000000100d2000180d2000100d2000100d200000000000000000000c6a20006c692000
TX 0108004dfc050c6a200038
RX 000000090000000900000002
RX 0000000000e269c2664987ae
RX 014dfc050c6a200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 6649bc49
RX 040e3c014dfc00554555510000000002000000010000000000000001000000180d2000200d2000180d2000180d20000000000000000000446a2000d4692000
TX 0108004dfc05446a200038
RX 000000090000000900000002
RX 0000000000e269c2664af918
RX 014dfc05446a200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 664b2d9b
RX 040e3c014dfc005545555100000000020000002000000000000000200000007c6a20007c6b20007c6a20007c6a20000000000000000000903320000c6a2000
TX 0108004dfc059033200038
RX 0000000900000009000000020000000000e269c2664cf025
RX 014dfc059033200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 664d236e
RX 040e3c014dfc005545555100000000020000000c000000000000000c0000009c732100fc732100ac732100ac7321000000000000000000705b2000446a2000
TX 0108004dfc05705b200038
RX 0000000900000009000000020000000000e269c2
RX 664ee493
RX 014dfc05705b200038
RX 0000003f0000003f0000000300000000
RX 00e269c2664f184e
RX 04
RX 0e3c014dfc00554555510000000001000000080000000000000008000000fc7321001c74210010742100107421000000000000000000c833200090332000
TX 0108004dfc05c833200038
RX 000000090000000900000002
RX 0000000000e269c2665059ac
RX 014dfc05c833200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6650912f
RX 040e3c014dfc005545555100000000020000001300000000000000130000001c742100b47421001c7421001c7421000000000000000000b4512000705b2000
TX 0108004dfc05b451200038
RX 0000000900000009
RX 000000020000000000e269c266525485
RX 014dfc05b451200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6652883b
RX 040e3c014dfc00554555510000000002000000060000000000000006000000b4742100e4742100b4742100b4742100000000000000000094ad2000c8332000
TX 0108004dfc0594ad200038
RX 000000090000000900000002
RX 0000000000e269c26653c77b
RX 014dfc0594ad200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6653fcfb
RX 040e3c014dfc00554555510000000001000000080000000000000008000000ccad2000ecad2000ccad2000ccad20000000000000000000ecad2000b4512000
TX 0108004dfc05ecad200038
RX 0000000900000009
RX 000000020000000000e269c2
RX 6655bd0f
RX 014dfc05ecad200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6655f6b7
RX 040e3c014dfc0055455551000000000100000010000000000000001000000024ae200064ae200024ae200024ae200000000000000000009065200094ad2000
Socket closed
+36
View File
@@ -0,0 +1,36 @@
# sendhcicmd 0x1001
TX 010300011000
RX 00000004
RX 00000004
RX 00000002
RX 00000000
RX 00e269bf
RX 571013e3
RX 01
RX 011000
RX 0000000f0000000f
RX 00000003
RX 00000000
RX 00e269bf
RX 57105c83
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
RX 000000030000000300000003
RX 0000000000e269bf571262bd
RX 07
RX f001
TX 010300011000
RX 000000040000000400000002
RX 00000000
RX 00e269bf
RX 573133d5
RX 01
RX 011000
RX 0000000f
RX 0000000f
RX 0000000300000000
RX 00e269bf57317b7a
RX 04
RX 0e0c01011000075301070f000961
Socket closed
+33
View File
@@ -0,0 +1,33 @@
# sendhcicmd 0x1337
TX 010300011000
RX 00000004
RX 00000004
RX 00000002
RX 00000000
RX 00e269bf
RX 5a00c7f5
RX 01
RX 011000
RX 0000000f
RX 0000000f0000000300000000
RX 00e269bf
RX 5a011119
RX 040e0c01011000075301070f000961
TX 070200f001
RX 000000030000000300000003
RX 0000000000e269bf5a030c96
RX 07f001
TX 010300371300
RX 000000040000000400000002
RX 00000000
RX 00e269bf
RX 5a7baf54
RX 01
RX 371300
RX 0000000700000007
RX 00000003
RX 00000000
RX 00e269bf
RX 5a7bf8b7
RX 040e0401371301
Socket closed
+34
View File
@@ -0,0 +1,34 @@
# hexdump 0
TX 010300011000
RX 0000000400000004000000020000000000e269bf52d3099e
RX 01011000
RX 0000000f0000000f000000030000000000e269bf52d351f1
RX 040e0c01011000075301070f000961
TX 070200f001
RX 00000003000000030000000300000000
RX 00e269bf52d43cea
RX 07f001
TX 0108004dfc0500000000fb
RX 000000090000000900000002
RX 00000000
RX 00e269bf
RX 530f0c74
RX 01
RX 4dfc0500000000fb
RX 00000102
RX 00000102
RX 00000003
RX 00000000
RX 00e269bf
RX 530f5400
RX 04
RX 0eff014dfc0000042000010200009f7506006775060067750600677506006775060000000000000000000000000000000000c5880600a175060000000000c588060095750600b1750600d5750600d5750600d5750600d5750600d5750600d5750600d5750600d5750600d5750600c3750600e7750600e7750600e7750600e7750600f9750600077606001576060023760600317606003f7606008576060093760600a5760600677506004d760600a3750600a3750600a3750600cb7606006775060067750600d9760600e7760600f57606000377060067750600677506006775060067750600357706002777060067750600677506005177060043770600117706
TX 0108004dfc05fb00000005
RX 000000090000000900000002
RX 0000000000e269bf5310814f
RX 014dfc05fb00000005
RX 0000000c0000000c
RX 000000030000000000e269bf
RX 5310b34e
RX 040e09014dfc000067750600
Socket closed
+187
View File
@@ -0,0 +1,187 @@
#info connections
TX 010300011000
RX 0000000400000004000000020000000000e269c211af9287
RX 01011000
RX 0000000f0000000f000000030000000000e269c211afc606
RX 040e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc05e8382000fb
RX 000000030000000300000003
RX 0000000000e269c211b12cec
RX 07f001
RX 00000009000000090000000200000000
RX 00e269c211b19677
RX 01
RX 4dfc05e8382000fb
RX 0000010200000102
RX 000000030000000000e269c2
RX 11b1ce0d
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e339200051
RX 0000000900000009000000020000000000e269c211b36d33
RX 01
RX 4dfc05e339200051
RX 0000005800000058
RX 000000030000000000e269c2
RX 11b39be7
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05343a2000fb
RX 000000090000000900000002
RX 0000000000e269c211b5679f
RX 014dfc05343a2000fb
RX 000001020000010200000003
RX 0000000000e269c211b59bbc
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc052f3b200051
RX 000000090000000900000002
RX 0000000000e269c211b6da65
RX 014dfc052f3b200051
RX 00000058
RX 000000580000000300000000
RX 00e269c211b7103c
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05803b2000fb
RX 00000009000000090000000200000000
RX 00e269c211b8d0df
RX 01
RX 4dfc05803b2000fb
RX 000001020000010200000003
RX 0000000000e269c211b90a7f
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc057b3c200051
RX 0000000900000009000000020000000000e269c211ba4851
RX 01
RX 4dfc057b3c200051
RX 0000005800000058
RX 000000030000000000e269c2
RX 11ba776c
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05cc3c2000fb
RX 000000090000000900000002
RX 0000000000e269c211bc4807
RX 014dfc05cc3c2000fb
RX 0000010200000102
RX 000000030000000000e269c211bc7e24
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05c73d200051
RX 0000000900000009000000020000000000e269c211bdb8a1
RX 014dfc05c73d200051
RX 0000005800000058
RX 000000030000000000e269c2
RX 11bded98
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05183e2000fb
RX 0000000900000009000000020000000000e269c211bfb647
RX 01
RX 4dfc05183e2000fb
RX 0000010200000102
RX 000000030000000000e269c2
RX 11bfe6b2
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05133f200051
RX 0000000900000009000000020000000000e269c211c1aa86
RX 014dfc05133f200051
RX 00000058
RX 00000058000000030000000000e269c2
RX 11c1da6e
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05643f2000fb
RX 0000000900000009000000020000000000e269c2
RX 11c31d18
RX 014dfc05643f2000fb
RX 00000102000001020000000300000000
RX 00e269c211c35297
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc055f40200051
RX 000000090000000900000002
RX 0000000000e269c211c51823
RX 014dfc055f40200051
RX 00000058
RX 000000580000000300000000
RX 00e269c211c54c9e
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05b0402000fb
RX 000000090000000900000002
RX 0000000000e269c211c689b0
RX 014dfc05b0402000fb
RX 00000102
RX 000001020000000300000000
RX 00e269c211c6bf30
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05ab41200051
RX 000000090000000900000002
RX 0000000000e269c2
RX 11c88437
RX 014dfc05ab41200051
RX 00000058
RX 000000580000000300000000
RX 00e269c211c8ba69
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05fc412000fb
RX 000000090000000900000002
RX 0000000000e269c211c9f7a0
RX 014dfc05fc412000fb
RX 00000102
RX 00000102000000030000000000e269c2
RX 11ca2c9d
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05f742200051
RX 000000090000000900000002
RX 0000000000e269c211cbee6a
RX 014dfc05f742200051
RX 00000058
RX 00000058000000030000000000e269c2
RX 11cc2779
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc0548432000fb
RX 0000000900000009000000020000000000e269c2
RX 11cde3be
RX 014dfc0548432000fb
RX 00000102
RX 000001020000000300000000
RX 00e269c211ce175c
RX 04
RX 0eff014dfc000900000000000000000000000000000000000000000000000000777700c91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000007d0000007d00000c001eff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000100000000000000f0ff0000000000000000000001c4000000000000
TX 0108004dfc054344200051
RX 0000000900000009000000020000000000e269c2
RX 11cf5a52
RX 014dfc054344200051
RX 000000580000005800000003
RX 0000000000e269c211cf8917
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc0594442000fb
RX 0000000900000009000000020000000000e269c211d14fcf
RX 01
RX 4dfc0594442000fb
RX 0000010200000102
RX 000000030000000000e269c211d182db
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc058f45200051
RX 0000000900000009000000020000000000e269c2
RX 11d2c911
RX 014dfc058f45200051
RX 00000058000000580000000300000000
RX 00e269c211d2f819
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e0452000fb
RX 0000000900000009
RX 000000020000000000e269c211d4c00a
RX 014dfc05e0452000fb
RX 00000102
RX 00000102000000030000000000e269c2
RX 11d4fa18
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05db46200051
RX 0000000900000009
RX 000000020000000000e269c211d6b5d7
RX 014dfc05db46200051
RX 00000058
RX 00000058000000030000000000e269c2
RX 11d6efa7
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Socket closed
@@ -0,0 +1,168 @@
# info connections
TX 010300011000
RX 0000000400000004000000020000000000e26b46e2c309cc
RX 01011000
RX 0000000f0000000f000000030000000000e26b46e2c3274f
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc05e8382000fb
RX 000000030000000300000003
RX 0000000000e26b46e2c428e8
RX 07
RX f001
RX 0000000900000009000000020000000000e26b46
RX e2c446b6
RX 014dfc05e8382000fb
RX 00000102000001020000000300000000
RX 00e26b46e2c46686
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e339200051
RX 0000000900000009000000020000000000e26b46e2c54298
RX 01
RX 4dfc05e339200051
RX 0000005800000058
RX 000000030000000000e26b46e2c55b0a
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05343a2000fb
RX 0000000900000009000000020000000000e26b46e2c66e34
RX 014dfc05343a2000fb
RX 000001020000010200000003
RX 0000000000e26b46e2c68443
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc052f3b200051
RX 000000090000000900000002
RX 0000000000e26b46e2c790ea
RX 014dfc052f3b200051
RX 00000058000000580000000300000000
RX 00e26b46e2c7af14
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05803b2000fb
RX 000000090000000900000002
RX 0000000000e26b46e2c8a5a1
RX 014dfc05803b2000fb
RX 00000102000001020000000300000000
RX 00e26b46e2c8c6f1
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc057b3c200051
RX 0000000900000009000000020000000000e26b46e2c987eb
RX 014dfc057b3c200051
RX 0000005800000058000000030000000000e26b46
RX e2c9a0dd
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05cc3c2000fb
RX 000000090000000900000002
RX 0000000000e26b46e2caa510
RX 014dfc05cc3c2000fb
RX 0000010200000102000000030000000000e26b46
RX e2cac525
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05c73d200051
RX 0000000900000009000000020000000000e26b46e2cbcf4b
RX 01
RX 4dfc05c73d200051
RX 000000580000005800000003
RX 0000000000e26b46e2cbf034
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05183e2000fb
RX 0000000900000009000000020000000000e26b46e2cca023
RX 014dfc05183e2000fb
RX 000001020000010200000003
RX 0000000000e26b46e2ccc67f
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05133f200051
RX 00000009000000090000000200000000
RX 00e26b46e2cda8a4
RX 01
RX 4dfc05133f200051
RX 0000005800000058000000030000000000e26b46e2cdce30
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05643f2000fb
RX 0000000900000009000000020000000000e26b46
RX e2ced9d5
RX 014dfc05643f2000fb
RX 000001020000010200000003
RX 0000000000e26b46e2cef558
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc055f40200051
RX 000000090000000900000002
RX 0000000000e26b46e2cf504b
RX 014dfc055f40200051
RX 00000058000000580000000300000000
RX 00e26b46e2cf73b7
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05b0402000fb
RX 000000090000000900000002
RX 0000000000e26b46e2d06c12
RX 014dfc05b0402000fb
RX 0000010200000102000000030000000000e26b46
RX e2d093f7
RX 040eff014dfc0007000000000000000000000000000007000000000000000000007711572d980700000000000010002e1a3a022300feb10a00c821ffff8ffa9bff59870100000000000000000000000000000000000000000000000000008d0500fa0a401f0000401f00000c001adddbea2d9c47bc1aa6afe664ff31591aa6e98a5eaaff39ecb5ce4447590dfb73a4161203cd6e77be6a4bcfb3ee52d3e2c40000000028000404000000130000001000000000020001003c002003001800009c7e1200b00402000200000002000101010200000000000000000000ffffffffffffffff0000000100000000000005f8ff001add0020000000000015d1000000000000
TX 0108004dfc05ab41200051
RX 000000090000000900000002
RX 0000000000e26b46e2d18faa
RX 014dfc05ab41200051
RX 0000005800000058000000030000000000e26b46e2d1ade2
RX 040e55014dfc000000000000000000000000000000000000a4000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000001000000
TX 0108004dfc05fc412000fb
RX 0000000900000009000000020000000000e26b46e2d2b2dd
RX 014dfc05fc412000fb
RX 0000010200000102000000030000000000e26b46e2d2ceb2
RX 040eff014dfc000800000000000000000000000000000000000000000000000000777700c91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000007d0000007d00000b001eff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000100000000000000f0ff0000000000000000000001c4000000000000
TX 0108004dfc05f742200051
RX 0000000900000009000000020000000000e26b46e2d3c699
RX 01
RX 4dfc05f742200051
RX 00000058000000580000000300000000
RX 00e26b46e2d3e510
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc0548432000fb
RX 0000000900000009000000020000000000e26b46e2d563ce
RX 014dfc0548432000fb
RX 00000102000001020000000300000000
RX 00e26b46e2d57e0a
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc054344200051
RX 0000000900000009000000020000000000e26b46e2d62821
RX 014dfc054344200051
RX 000000580000005800000003
RX 0000000000e26b46e2d63ad6
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc0594442000fb
RX 0000000900000009
RX 000000020000000000e26b46
RX e2d6c43c
RX 014dfc0594442000fb
RX 00000102000001020000000300000000
RX 00e26b46e2d6ebde
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc058f45200051
RX 0000000900000009000000020000000000e26b46e2d7daf3
RX 01
RX 4dfc058f45200051
RX 00000058000000580000000300000000
RX 00e26b46e2d7fab5
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e0452000fb
RX 0000000900000009
RX 000000020000000000e26b46
RX e2d8ed9a
RX 014dfc05e0452000fb
RX 00000102000001020000000300000000
RX 00e26b46e2d91d63
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05db46200051
RX 0000000900000009
RX 000000020000000000e26b46
RX e2da0321
RX 014dfc05db46200051
RX 0000005800000058000000030000000000e26b46e2da2145
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
RX 0000001a
Socket closed
+44
View File
@@ -0,0 +1,44 @@
#info device
TX 010300011000
RX 00000004
RX 00000004
RX 00000002
RX 00000000
RX 00e269c2
RX 1010a0f2
RX 01
RX 011000
RX 0000000f
RX 0000000f
RX 00000003
RX 00000000
RX 00e269c2
RX 1010e99d
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc052c0c210006
RX 0000000300000003000000030000000000e269c210128aa7
RX 07f001
RX 000000090000000900000002
RX 0000000000e269c210129ad2
RX 014dfc052c0c210006
RX 0000000d
RX 0000000d000000030000000000e269c2
RX 1012a345
RX 040e0a014dfc00f1037dc795f8
TX 0108004dfc05b4782100fb
RX 0000000900000009000000020000000000e269c210130715
RX 014dfc05b4782100fb
RX 0000010200000102000000030000000000e269c2
RX 10130fc0
RX 04
RX 0eff014dfc0008094e657875732035170305110a110c110e111211151116111f112f1100123211010501070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000107a21000e0a014dfc00f1
TX 0108004dfc05af79210007
RX 0000000900000009000000020000000000e269c210138340
RX 01
RX 4dfc05af79210007
RX 0000000e0000000e00000003
RX 0000000000e269c210138aa9
RX 040e0b014dfc00037dc795f80461
Socket closed
+685
View File
@@ -0,0 +1,685 @@
# info heap
TX 010300011000
RX 0000000400000004000000020000000000e269c200a6dc56
RX 01011000
RX 0000000f0000000f000000030000000000e269c2
RX 00a717ec
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc059430200004
RX 000000030000000300000003
RX 0000000000e269c200a87965
RX 07f001
RX 00000009000000090000000200000000
RX 00e269c200a8e193
RX 01
RX 4dfc059430200004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00a918e2
RX 040e08014dfc00c85d2000
TX 0108004dfc05c85d200030
RX 000000090000000900000002
RX 0000000000e269c200aab793
RX 014dfc05c85d200030
RX 00000037
RX 000000370000000300000000
RX 00e269c200aaf0ec
RX 04
RX 0e34014dfc00434f4c42000000000700000008000000a4792100a479210020010000200000000000000000000000f85d200068ec2000
TX 0108004dfc05a479210004
RX 000000090000000900000002
RX 0000000000e269c200acb1ba
RX 014dfc05a479210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200ace5c2
RX 04
RX 0e08014dfc00c85d2000
TX 0108004dfc05c879210004
RX 000000090000000900000002
RX 0000000000e269c200ae2501
RX 014dfc05c879210004
RX 0000000b0000000b0000000300000000
RX 00e269c200ae5915
RX 04
RX 0e08014dfc00587a2100
TX 0108004dfc05ec79210004
RX 0000000900000009000000020000000000e269c200b01eae
RX 01
RX 4dfc05ec79210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200b04d6c
RX 04
RX 0e08014dfc007c7a2100
TX 0108004dfc05107a210004
RX 0000000900000009000000020000000000e269c200b19061
RX 014dfc05107a210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200b1c4f3
RX 04
RX 0e08014dfc00c8792100
TX 0108004dfc05347a210004
RX 0000000900000009000000020000000000e269c200b38d00
RX 01
RX 4dfc05347a210004
RX 0000000b0000000b
RX 000000030000000000e269c200b3bbaa
RX 040e08014dfc00c85d2000
TX 0108004dfc05587a210004
RX 0000000900000009000000020000000000e269c200b58252
RX 014dfc05587a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00b5b18b
RX 040e08014dfc00ec792100
TX 0108004dfc057c7a210004
RX 0000000900000009000000020000000000e269c200b6f455
RX 014dfc057c7a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00b728c4
RX 040e08014dfc00a07a2100
TX 0108004dfc05a07a210004
RX 000000090000000900000002
RX 0000000000e269c200b8f1d6
RX 014dfc05a07a210004
RX 0000000b0000000b000000030000000000e269c2
RX 00b92612
RX 040e08014dfc0000000000
TX 0108004dfc05f85d200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ba65be
RX 014dfc05f85d200030
RX 00000037000000370000000300000000
RX 00e269c200ba9b76
RX 04
RX 0e34014dfc00434f4c42000000000700000008000000087b2100c47a210020020000400000000000000000000000285e2000c85d2000
TX 0108004dfc05c47a210004
RX 000000090000000900000002
RX 0000000000e269c200bc6390
RX 014dfc05c47a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00bc987e
RX 04
RX 0e08014dfc00087b2100
TX 0108004dfc05087b210004
RX 0000000900000009000000020000000000e269c2
RX 00bdd708
RX 014dfc05087b210004
RX 0000000b0000000b0000000300000000
RX 00e269c200be075f
RX 04
RX 0e08014dfc004c7b2100
TX 0108004dfc054c7b210004
RX 0000000900000009000000020000000000e269c200bfd07f
RX 014dfc054c7b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00bfffe2
RX 040e08014dfc00907b2100
TX 0108004dfc05907b210004
RX 000000090000000900000002
RX 0000000000e269c200c1c264
RX 014dfc05907b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c1fba1
RX 040e08014dfc00d47b2100
TX 0108004dfc05d47b210004
RX 000000090000000900000002
RX 0000000000e269c200c339f3
RX 014dfc05d47b210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c36f64
RX 040e08014dfc00187c2100
TX 0108004dfc05187c210004
RX 0000000900000009000000020000000000e269c200c53386
RX 014dfc05187c210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00c56249
RX 040e08014dfc005c7c2100
TX 0108004dfc055c7c210004
RX 0000000900000009000000020000000000e269c2
RX 00c6a64c
RX 014dfc055c7c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200c6d51e
RX 04
RX 0e08014dfc00a07c2100
TX 0108004dfc05a07c210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00c8a176
RX 014dfc05a07c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200c8daef
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc05285e200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ca1661
RX 014dfc05285e200030
RX 000000370000003700000003
RX 0000000000e269c200ca4c0b
RX 040e34014dfc00434f4c42000000000a0000000a000000e47c2100e47c2100780a0000080100000000000000000000885e2000f85d2000
TX 0108004dfc05e47c210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00cc13aa
RX 014dfc05e47c210004
RX 0000000b0000000b0000000300000000
RX 00e269c200cc49c8
RX 04
RX 0e08014dfc00f07d2100
TX 0108004dfc05f07d210004
RX 00000009000000090000000200000000
RX 00e269c200ce084a
RX 014dfc05f07d210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00ce3d02
RX 040e08014dfc00fc7e2100
TX 0108004dfc05fc7e210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00cf7abc
RX 014dfc05fc7e210004
RX 0000000b0000000b0000000300000000
RX 00e269c200cfafff
RX 04
RX 0e08014dfc0008802100
TX 0108004dfc050880210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00d1718e
RX 014dfc050880210004
RX 0000000b0000000b0000000300000000
RX 00e269c200d1ad02
RX 040e08014dfc0014812100
TX 0108004dfc051481210004
RX 0000000900000009000000020000000000e269c200d2e49d
RX 01
RX 4dfc051481210004
RX 0000000b0000000b
RX 000000030000000000e269c200d313fc
RX 040e08014dfc0020822100
TX 0108004dfc052082210004
RX 0000000900000009000000020000000000e269c2
RX 00d4dfc6
RX 014dfc052082210004
RX 0000000b0000000b00000003
RX 0000000000e269c200d50e59
RX 040e08014dfc002c832100
TX 0108004dfc052c83210004
RX 00000009000000090000000200000000
RX 00e269c200d65308
RX 01
RX 4dfc052c83210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00d68806
RX 040e08014dfc0038842100
TX 0108004dfc053884210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00d84aba
RX 014dfc053884210004
RX 0000000b0000000b00000003
RX 0000000000e269c200d88584
RX 040e08014dfc0044852100
TX 0108004dfc054485210004
RX 0000000900000009000000020000000000e269c2
RX 00da42d6
RX 014dfc054485210004
RX 0000000b0000000b00000003
RX 0000000000e269c200da7651
RX 040e08014dfc0050862100
TX 0108004dfc055086210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00dbba9e
RX 014dfc055086210004
RX 0000000b0000000b00000003
RX 0000000000e269c200dbf538
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc05885e200030
RX 00000009000000090000000200000000
RX 00e269c200ddb037
RX 01
RX 4dfc05885e200030
RX 000000370000003700000003
RX 0000000000e269c200dde9b6
RX 040e34014dfc00434f4c4200000000040000000400000024c6210024c62100b0100000280400000000000000000000585e2000285e2000
TX 0108004dfc0524c6210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00df268a
RX 014dfc0524c6210004
RX 0000000b0000000b0000000300000000
RX 00e269c200df5cd7
RX 040e08014dfc0050ca2100
TX 0108004dfc0550ca210004
RX 0000000900000009000000020000000000e269c2
RX 00e11eb6
RX 01
RX 4dfc0550ca210004
RX 0000000b0000000b00000003
RX 0000000000e269c200e15819
RX 040e08014dfc007cce2100
TX 0108004dfc057cce210004
RX 00000009000000090000000200000000
RX 00e269c200e29334
RX 01
RX 4dfc057cce210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00e2c73e
RX 040e08014dfc00a8d22100
TX 0108004dfc05a8d2210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e4925e
RX 014dfc05a8d2210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200e4c673
RX 040e08014dfc0000000000
TX 0108004dfc05585e200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e5ff65
RX 014dfc05585e200030
RX 000000370000003700000003
RX 0000000000e269c200e63326
RX 040e34014dfc00434f4c42000000001000000010000000d4d62100d4d621008044000044040000000000000000000038ec2000885e2000
TX 0108004dfc05d4d6210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00e7fcce
RX 014dfc05d4d6210004
RX 0000000b0000000b0000000300000000
RX 00e269c200e8313f
RX 040e08014dfc001cdb2100
TX 0108004dfc051cdb210004
RX 0000000900000009000000020000000000e269c200e9f3c0
RX 014dfc051cdb210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 00ea223f
RX 040e08014dfc0064df2100
TX 0108004dfc0564df210004
RX 00000009000000090000000200000000
RX 00e269c200eb6947
RX 01
RX 4dfc0564df210004
RX 0000000b0000000b00000003
RX 0000000000e269c200eb9dc8
RX 04
RX 0e08014dfc00ace32100
TX 0108004dfc05ace3210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00ed6025
RX 014dfc05ace3210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00edb820
RX 040e08014dfc00f4e72100
TX 0108004dfc05f4e7210004
RX 00000009000000090000000200000000
RX 00e269c200eeaa84
RX 014dfc05f4e7210004
RX 0000000b0000000b000000030000000000e269c200eeb23c
RX 04
RX 0e08014dfc003cec2100
TX 0108004dfc053cec210004
RX 0000000900000009
RX 000000020000000000e269c200ef25f0
RX 01
RX 4dfc053cec210004
RX 0000000b
RX 0000000b000000030000000000e269c200ef2e26
RX 04
RX 0e08014dfc0084f02100
TX 0108004dfc0584f0210004
RX 0000000900000009000000020000000000e269c200efa285
RX 014dfc0584f0210004
RX 0000000b
RX 0000000b000000030000000000e269c200efa979
RX 040e08014dfc00ccf42100
TX 0108004dfc05ccf4210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00f0207c
RX 014dfc05ccf4210004
RX 0000000b0000000b0000000300000000
RX 00e269c200f028c8
RX 04
RX 0e08014dfc0014f92100
TX 0108004dfc0514f9210004
RX 0000000900000009000000020000000000e269c200f0b8fd
RX 014dfc0514f9210004
RX 0000000b0000000b0000000300000000
RX 00e269c200f0bf4a
RX 040e08014dfc005cfd2100
TX 0108004dfc055cfd210004
RX 00000009000000090000000200000000
RX 00e269c200f11c7d
RX 01
RX 4dfc055cfd210004
RX 0000000b0000000b00000003
RX 0000000000e269c200f12aa4
RX 040e08014dfc00a4012200
TX 0108004dfc05a401220004
RX 0000000900000009000000020000000000e269c200f1946c
RX 014dfc05a401220004
RX 0000000b0000000b00000003
RX 0000000000e269c200f19f40
RX 040e08014dfc00ec052200
TX 0108004dfc05ec05220004
RX 0000000900000009000000020000000000e269c200f20f44
RX 01
RX 4dfc05ec05220004
RX 0000000b0000000b00000003
RX 0000000000e269c200f21b6a
RX 04
RX 0e08014dfc00340a2200
TX 0108004dfc05340a220004
RX 0000000900000009000000020000000000e269c200f29be7
RX 014dfc05340a220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 00f2b3bd
RX 040e08014dfc007c0e2200
TX 0108004dfc057c0e220004
RX 00000009
RX 00000009
RX 0000000200000000
RX 00e269c200f3a7c6
RX 01
RX 4dfc057c0e220004
RX 0000000b0000000b000000030000000000e269c2
RX 00f4951f
RX 040e08014dfc00c4122200
TX 0108004dfc05c412220004
RX 0000000900000009
RX 000000020000000000e269c200f637e5
RX 014dfc05c412220004
RX 0000000b0000000b000000030000000000e269c200f63f91
RX 040e08014dfc000c172200
TX 0108004dfc050c17220004
RX 00000009
RX 000000090000000200000000
RX 00e269c200f6f156
RX 014dfc050c17220004
RX 0000000b0000000b0000000300000000
RX 00e269c200f6f966
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc0538ec200030
RX 00000009000000090000000200000000
RX 00e269c200f76de0
RX 014dfc0538ec200030
RX 0000003700000037000000030000000000e269c200f7757d
RX 040e34014dfc00434f4c42000000000f0000000f000000541b2200541b22009402000028000000000000000000000068ec2000585e2000
TX 0108004dfc05541b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00f8133d
RX 014dfc05541b220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200f83a20
RX 04
RX 0e08014dfc00801b2200
TX 0108004dfc05801b220004
RX 0000000900000009000000020000000000e269c200f909ee
RX 014dfc05801b220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c200f935e2
RX 04
RX 0e08014dfc00ac1b2200
TX 0108004dfc05ac1b220004
RX 0000000900000009000000020000000000e269c2
RX 00fb146c
RX 014dfc05ac1b220004
RX 0000000b
RX 0000000b00000003
RX 0000000000e269c200fb4327
RX 040e08014dfc00d81b2200
TX 0108004dfc05d81b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 00fd0682
RX 014dfc05d81b220004
RX 0000000b0000000b0000000300000000
RX 00e269c200fd3fca
RX 04
RX 0e08014dfc00041c2200
TX 0108004dfc05041c220004
RX 00000009000000090000000200000000
RX 00e269c200fe7d8e
RX 01
RX 4dfc05041c220004
RX 0000000b0000000b00000003
RX 0000000000e269c200feb0d4
RX 040e08014dfc00301c2200
TX 0108004dfc05301c220004
RX 0000000900000009000000020000000000e269c2
RX 010074cc
RX 014dfc05301c220004
RX 0000000b0000000b0000000300000000
RX 00e269c20100a76b
RX 04
RX 0e08014dfc005c1c2200
TX 0108004dfc055c1c220004
RX 0000000900000009000000020000000000e269c20101eacb
RX 014dfc055c1c220004
RX 0000000b0000000b0000000300000000
RX 00e269c201021779
RX 04
RX 0e08014dfc00881c2200
TX 0108004dfc05881c220004
RX 0000000900000009000000020000000000e269c20103e6c3
RX 014dfc05881c220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201041515
RX 04
RX 0e08014dfc00b41c2200
TX 0108004dfc05b41c220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 01055aa2
RX 014dfc05b41c220004
RX 0000000b0000000b0000000300000000
RX 00e269c201058f0e
RX 040e08014dfc00e01c2200
TX 0108004dfc05e01c220004
RX 000000090000000900000002
RX 0000000000e269c201075199
RX 014dfc05e01c220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201078a8c
RX 04
RX 0e08014dfc000c1d2200
TX 0108004dfc050c1d220004
RX 0000000900000009000000020000000000e269c2
RX 010948a2
RX 014dfc050c1d220004
RX 0000000b0000000b0000000300000000
RX 00e269c201097c0d
RX 04
RX 0e08014dfc00381d2200
TX 0108004dfc05381d220004
RX 0000000900000009
RX 000000020000000000e269c2010ac2b3
RX 014dfc05381d220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2010afeef
RX 04
RX 0e08014dfc00641d2200
TX 0108004dfc05641d220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 010cbc41
RX 014dfc05641d220004
RX 0000000b0000000b00000003
RX 0000000000e269c2010cefe5
RX 040e08014dfc00901d2200
TX 0108004dfc05901d220004
RX 00000009000000090000000200000000
RX 00e269c2010e2df1
RX 01
RX 4dfc05901d220004
RX 0000000b0000000b00000003
RX 0000000000e269c2010e61ea
RX 040e08014dfc00bc1d2200
TX 0108004dfc05bc1d220004
RX 000000090000000900000002
RX 0000000000e269c20110231e
RX 014dfc05bc1d220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201105c92
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc0568ec200030
RX 0000000900000009000000020000000000e269c2
RX 01119816
RX 014dfc0568ec200030
RX 00000037000000370000000300000000
RX 00e269c20111c667
RX 04
RX 0e34014dfc00434f4c42000000000f0000000f000000e81d2200e81d22001c020000200000000000000000000000c85d200038ec2000
TX 0108004dfc05e81d220004
RX 00000009000000090000000200000000
RX 00e269c201138f25
RX 01
RX 4dfc05e81d220004
RX 0000000b0000000b
RX 000000030000000000e269c20113c768
RX 040e08014dfc000c1e2200
TX 0108004dfc050c1e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 011507e7
RX 014dfc050c1e220004
RX 0000000b0000000b0000000300000000
RX 00e269c201153d26
RX 04
RX 0e08014dfc00301e2200
TX 0108004dfc05301e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 0116fe0e
RX 014dfc05301e220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201173734
RX 04
RX 0e08014dfc00541e2200
TX 0108004dfc05541e220004
RX 0000000900000009000000020000000000e269c20118f296
RX 014dfc05541e220004
RX 0000000b0000000b
RX 000000030000000000e269c2011926ef
RX 040e08014dfc00781e2200
TX 0108004dfc05781e220004
RX 0000000900000009000000020000000000e269c2011a6bbe
RX 014dfc05781e220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2011a9958
RX 04
RX 0e08014dfc009c1e2200
TX 0108004dfc059c1e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 011c676b
RX 014dfc059c1e220004
RX 0000000b0000000b00000003
RX 0000000000e269c2011c9b6e
RX 040e08014dfc00c01e2200
TX 0108004dfc05c01e220004
RX 0000000900000009000000020000000000e269c2
RX 011dda94
RX 014dfc05c01e220004
RX 0000000b0000000b0000000300000000
RX 00e269c2011e0829
RX 04
RX 0e08014dfc00e41e2200
TX 0108004dfc05e41e220004
RX 0000000900000009000000020000000000e269c2011fd393
RX 014dfc05e41e220004
RX 0000000b0000000b
RX 0000000300000000
RX 00e269c201200234
RX 040e08014dfc00081f2200
TX 0108004dfc05081f220004
RX 0000000900000009000000020000000000e269c2
RX 012145f7
RX 014dfc05081f220004
RX 0000000b0000000b0000000300000000
RX 00e269c20121a431
RX 04
RX 0e08014dfc002c1f2200
TX 0108004dfc052c1f220004
RX 000000090000000900000002
RX 0000000000e269c201230eec
RX 014dfc052c1f220004
RX 0000000b0000000b0000000300000000
RX 00e269c201231658
RX 040e08014dfc00501f2200
TX 0108004dfc05501f220004
RX 0000000900000009
RX 000000020000000000e269c20124484f
RX 014dfc05501f220004
RX 0000000b0000000b0000000300000000
RX 00e269c201244f7a
RX 040e08014dfc00741f2200
TX 0108004dfc05741f220004
RX 00000009
RX 00000009000000020000000000e269c201250543
RX 01
RX 4dfc05741f220004
RX 0000000b0000000b000000030000000000e269c2
RX 01250d7b
RX 040e08014dfc00981f2200
TX 0108004dfc05981f220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 0125e492
RX 014dfc05981f220004
RX 0000000b0000000b00000003
RX 0000000000e269c201260ab3
RX 040e08014dfc00bc1f2200
TX 0108004dfc05bc1f220004
RX 0000000900000009000000020000000000e269c2
RX 01276da0
RX 014dfc05bc1f220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c201279c46
RX 040e08014dfc00e01f2200
TX 0108004dfc05e01f220004
RX 0000000900000009000000020000000000e269c2
RX 0128e461
RX 014dfc05e01f220004
RX 0000000b0000000b00000003
RX 0000000000e269c2012914b3
RX 040e08014dfc0000000000
Socket closed
@@ -0,0 +1,747 @@
# info heap
TX 01011000
RX 0000000f0000000f000000030000000000e27beebf93dd9f
RX 040e0c01011000094f01090f001a41
TX 014dfc057c06200004
RX 0000000b0000000b000000030000000000e27beebf9481eb
RX 040e08014dfc009c062000
TX 014dfc059c06200030
RX 0000003700000037000000030000000000e27beebf94e223
RX 040e34014dfc00bc06200020006000782a2100b82a21005f02047300000000000000005c00b8ebdc06200060003e007836210078362100
TX 014dfc05782a210004
RX 0000000b0000000b000000030000000000e27beebf951eb3
RX 040e08014dfc00f82a2100
TX 014dfc059c2a210004
RX 0000000b0000000b000000030000000000e27beebf955ded
RX 040e08014dfc003f700000
TX 014dfc05c02a210004
RX 0000000b0000000b000000030000000000e27beebf95a038
RX 040e08014dfc000e08014d
TX 014dfc05e42a210004
RX 0000000b0000000b000000030000000000e27beebf95ddda
RX 040e08014dfc00cc118300
TX 014dfc05082b210004
RX 0000000b0000000b000000030000000000e27beebf960919
RX 040e08014dfc00057e2f20
TX 014dfc052c2b210004
RX 0000000b0000000b000000030000000000e27beebf961c69
RX 040e08014dfc0055382000
TX 014dfc05502b210004
RX 0000000b0000000b000000030000000000e27beebf964a96
RX 040e08014dfc00ffff0100
TX 014dfc05742b210004
RX 0000000b0000000b000000030000000000e27beebf969a6a
RX 040e08014dfc0000000000
TX 014dfc05982b210004
RX 0000000b0000000b000000030000000000e27beebf96fad6
RX 040e08014dfc00b82b2100
TX 014dfc05bc2b210004
RX 0000000b0000000b000000030000000000e27beebf973df6
RX 040e08014dfc000000ffff
TX 014dfc05e02b210004
RX 0000000b0000000b000000030000000000e27beebf97805e
RX 040e08014dfc0000000010
TX 014dfc05042c210004
RX 0000000b0000000b000000030000000000e27beebf97c6f5
RX 040e08014dfc00ffff0038
TX 014dfc05282c210004
RX 0000000b0000000b000000030000000000e27beebf9805a2
RX 040e08014dfc00e000004c
TX 014dfc054c2c210004
RX 0000000b0000000b000000030000000000e27beebf9847c9
RX 040e08014dfc0065000000
TX 014dfc05702c210004
RX 0000000b0000000b000000030000000000e27beebf98a930
RX 040e08014dfc006500a800
TX 014dfc05942c210004
RX 0000000b0000000b000000030000000000e27beebf99108a
RX 040e08014dfc00d0010300
TX 014dfc05b82c210004
RX 0000000b0000000b000000030000000000e27beebf99524c
RX 040e08014dfc00d82c2100
TX 014dfc05dc2c210004
RX 0000000b0000000b000000030000000000e27beebf99929f
RX 040e08014dfc0000000000
TX 014dfc05002d210004
RX 0000000b0000000b000000030000000000e27beebf99d466
RX 040e08014dfc0000000000
TX 014dfc05242d210004
RX 0000000b0000000b000000030000000000e27beebf9a15bc
RX 040e08014dfc00ffff80ff
TX 014dfc05482d210004
RX 0000000b0000000b000000030000000000e27beebf9a56d4
RX 040e08014dfc0000000500
TX 014dfc056c2d210004
RX 0000000b0000000b000000030000000000e27beebf9a9929
RX 040e08014dfc0000ec0301
TX 014dfc05902d210004
RX 0000000b0000000b000000030000000000e27beebf9adc19
RX 040e08014dfc0045432000
TX 014dfc05b42d210004
RX 0000000b0000000b000000030000000000e27beebf9b4126
RX 040e08014dfc0000010003
TX 014dfc05d82d210004
RX 0000000b0000000b000000030000000000e27beebf9ba307
RX 040e08014dfc00f82d2100
TX 014dfc05fc2d210004
RX 0000000b0000000b000000030000000000e27beebf9be4fe
RX 040e08014dfc0000ff0000
TX 014dfc05202e210004
RX 0000000b0000000b000000030000000000e27beebf9c2a13
RX 040e08014dfc0000a80360
TX 014dfc05442e210004
RX 0000000b0000000b000000030000000000e27beebf9c6c61
RX 040e08014dfc0014000000
TX 014dfc05682e210004
RX 0000000b0000000b000000030000000000e27beebf9cab70
RX 040e08014dfc002f000000
TX 014dfc058c2e210004
RX 0000000b0000000b000000030000000000e27beebf9cebaf
RX 040e08014dfc005f000000
TX 014dfc05b02e210004
RX 0000000b0000000b000000030000000000e27beebf9d6ba8
RX 040e08014dfc002f000000
TX 014dfc05d42e210004
RX 0000000b0000000b000000030000000000e27beebf9dad08
RX 040e08014dfc002f000000
TX 014dfc05f82e210004
RX 0000000b0000000b000000030000000000e27beebf9dee39
RX 040e08014dfc00182f2100
TX 014dfc051c2f210004
RX 0000000b0000000b000000030000000000e27beebf9e3190
RX 040e08014dfc0022000000
TX 014dfc05402f210004
RX 0000000b0000000b000000030000000000e27beebf9e71b0
RX 040e08014dfc0000000000
TX 014dfc05642f210004
RX 0000000b0000000b000000030000000000e27beebf9eb2b9
RX 040e08014dfc0000000000
TX 014dfc05882f210004
RX 0000000b0000000b000000030000000000e27beebf9ef366
RX 040e08014dfc00002f0000
TX 014dfc05ac2f210004
RX 0000000b0000000b000000030000000000e27beebf9f354b
RX 040e08014dfc00006f0000
TX 014dfc05d02f210004
RX 0000000b0000000b000000030000000000e27beebf9f7655
RX 040e08014dfc00002f0000
TX 014dfc05f42f210004
RX 0000000b0000000b000000030000000000e27beebf9fb7ca
RX 040e08014dfc00002f0000
TX 014dfc051830210004
RX 0000000b0000000b000000030000000000e27beebfa01abc
RX 040e08014dfc0038302100
TX 014dfc053c30210004
RX 0000000b0000000b000000030000000000e27beebfa0b97a
RX 040e08014dfc0000220000
TX 014dfc056030210004
RX 0000000b0000000b000000030000000000e27beebfa0fbc8
RX 040e08014dfc0000000000
TX 014dfc058430210004
RX 0000000b0000000b000000030000000000e27beebfa13d4e
RX 040e08014dfc0000000000
TX 014dfc05a830210004
RX 0000000b0000000b000000030000000000e27beebfa17f0c
RX 040e08014dfc0006000000
TX 014dfc05cc30210004
RX 0000000b0000000b000000030000000000e27beebfa1bf98
RX 040e08014dfc00034100ff
TX 014dfc05f030210004
RX 0000000b0000000b000000030000000000e27beebfa2020e
RX 040e08014dfc00a594a534
TX 014dfc051431210004
RX 0000000b0000000b000000030000000000e27beebfa267d2
RX 040e08014dfc0000ff0080
TX 014dfc053831210004
RX 0000000b0000000b000000030000000000e27beebfa2c994
RX 040e08014dfc0058312100
TX 014dfc055c31210004
RX 0000000b0000000b000000030000000000e27beebfa32ad9
RX 040e08014dfc00ffef3df1
TX 014dfc058031210004
RX 0000000b0000000b000000030000000000e27beebfa3cb04
RX 040e08014dfc00034100ff
TX 014dfc05a431210004
RX 0000000b0000000b000000030000000000e27beebfa40c2c
RX 040e08014dfc002800ac01
TX 014dfc05c831210004
RX 0000000b0000000b000000030000000000e27beebfa46da9
RX 040e08014dfc0028000000
TX 014dfc05ec31210004
RX 0000000b0000000b000000030000000000e27beebfa4cc7e
RX 040e08014dfc0000400000
TX 014dfc051032210004
RX 0000000b0000000b000000030000000000e27beebfa52e35
RX 040e08014dfc0000ffffff
TX 014dfc053432210004
RX 0000000b0000000b000000030000000000e27beebfa5ccaa
RX 040e08014dfc0000000005
TX 014dfc055832210004
RX 0000000b0000000b000000030000000000e27beebfa62bf3
RX 040e08014dfc0078322100
TX 014dfc057c32210004
RX 0000000b0000000b000000030000000000e27beebfa6cbdb
RX 040e08014dfc0000002000
TX 014dfc05a032210004
RX 0000000b0000000b000000030000000000e27beebfa70e9e
RX 040e08014dfc00a3ce1400
TX 014dfc05c432210004
RX 0000000b0000000b000000030000000000e27beebfa7529e
RX 040e08014dfc00eb049005
TX 014dfc05e832210004
RX 0000000b0000000b000000030000000000e27beebfa7b27a
RX 040e08014dfc0045064506
TX 014dfc050c33210004
RX 0000000b0000000b000000030000000000e27beebfa7db6c
RX 040e08014dfc006004a104
TX 014dfc053033210004
RX 0000000b0000000b000000030000000000e27beebfa82c47
RX 040e08014dfc0026052605
TX 014dfc055433210004
RX 0000000b0000000b000000030000000000e27beebfa88acc
RX 040e08014dfc00ffac02ff
TX 014dfc057833210004
RX 0000000b0000000b000000030000000000e27beebfa8ce07
RX 040e08014dfc0098332100
TX 014dfc059c33210004
RX 0000000b0000000b000000030000000000e27beebfa912b5
RX 040e08014dfc00c004ffc4
TX 014dfc05c033210004
RX 0000000b0000000b000000030000000000e27beebfa954ce
RX 040e08014dfc003c323232
TX 014dfc05e433210004
RX 0000000b0000000b000000030000000000e27beebfa994a5
RX 040e08014dfc0010101010
TX 014dfc050834210004
RX 0000000b0000000b000000030000000000e27beebfa9d741
RX 040e08014dfc0077777777
TX 014dfc052c34210004
RX 0000000b0000000b000000030000000000e27beebfaa3962
RX 040e08014dfc006f6f6f0f
TX 014dfc055034210004
RX 0000000b0000000b000000030000000000e27beebfaa9ffe
RX 040e08014dfc0074078c8c
TX 014dfc057434210004
RX 0000000b0000000b000000030000000000e27beebfab0517
RX 040e08014dfc00ff060100
TX 014dfc059834210004
RX 0000000b0000000b000000030000000000e27beebfab669f
RX 040e08014dfc00b8342100
TX 014dfc05bc34210004
RX 0000000b0000000b000000030000000000e27beebfabc8a4
RX 040e08014dfc009f747474
TX 014dfc05e034210004
RX 0000000b0000000b000000030000000000e27beebfac29a6
RX 040e08014dfc009f9f9f9f
TX 014dfc050435210004
RX 0000000b0000000b000000030000000000e27beebfac8aea
RX 040e08014dfc007f7f7f7f
TX 014dfc052835210004
RX 0000000b0000000b000000030000000000e27beebfacef98
RX 040e08014dfc007272727c
TX 014dfc054c35210004
RX 0000000b0000000b000000030000000000e27beebfad5616
RX 040e08014dfc0004eb04eb
TX 014dfc057035210004
RX 0000000b0000000b000000030000000000e27beebfadf65e
RX 040e08014dfc0006450645
TX 014dfc059435210004
RX 0000000b0000000b000000030000000000e27beebfae3a18
RX 040e08014dfc0004600460
TX 014dfc05b835210004
RX 0000000b0000000b000000030000000000e27beebfae9e98
RX 040e08014dfc00d8352100
TX 014dfc05dc35210004
RX 0000000b0000000b000000030000000000e27beebfaeff80
RX 040e08014dfc00ffa802ff
TX 014dfc050036210004
RX 0000000b0000000b000000030000000000e27beebfaf61dc
RX 040e08014dfc0007ffc807
TX 014dfc052436210004
RX 0000000b0000000b000000030000000000e27beebfafc1f3
RX 040e08014dfc00bc04ffc0
TX 014dfc054836210004
RX 0000000b0000000b000000030000000000e27beebfb0252b
RX 040e08014dfc003c3c3c3c
TX 014dfc056c36210004
RX 0000000b0000000b000000030000000000e27beebfb0c5cf
RX 040e08014dfc003c3c3c50
TX 014dfc059036210004
RX 0000000b0000000b000000030000000000e27beebfb12794
RX 040e08014dfc002100b82a
TX 014dfc05b436210004
RX 0000000b0000000b000000030000000000e27beebfb187f5
RX 040e08014dfc0021000000
TX 014dfc05d836210004
RX 0000000b0000000b000000030000000000e27beebfb2093d
RX 040e08014dfc0038372100
TX 014dfc05fc36210004
RX 0000000b0000000b000000030000000000e27beebfb26af0
RX 040e08014dfc00077f0006
TX 014dfc052037210004
RX 0000000b0000000b000000030000000000e27beebfb2e7d2
RX 040e08014dfc0005ca05ca
TX 014dfc054437210004
RX 0000000b0000000b000000030000000000e27beebfb35c0b
RX 040e08014dfc00ff14ff14
TX 014dfc056837210004
RX 0000000b0000000b000000030000000000e27beebfb3e988
RX 040e08014dfc004b5a5a5a
TX 014dfc058c37210004
RX 0000000b0000000b000000030000000000e27beebfb45c21
RX 040e08014dfc0001030105
TX 014dfc05b037210004
RX 0000000b0000000b000000030000000000e27beebfb4dbda
RX 040e08014dfc00646c2000
TX 014dfc05d437210004
RX 0000000b0000000b000000030000000000e27beebfb56e46
RX 040e08014dfc00fdf9f5f1
TX 014dfc05bc06200030
RX 0000003700000037000000030000000000e27beebfb5f264
RX 040e34014dfc00dc06200060003e0078362100783621003e02252100000000000000003d00d187fc0620000c011400b84d2100c44e2100
TX 014dfc057836210004
RX 0000000b0000000b000000030000000000e27beebfb6719b
RX 040e08014dfc00d8362100
TX 014dfc05dc36210004
RX 0000000b0000000b000000030000000000e27beebfb6f22a
RX 040e08014dfc00078c8c8c
TX 014dfc054037210004
RX 0000000b0000000b000000030000000000e27beebfb78409
RX 040e08014dfc00ff14ff14
TX 014dfc05a437210004
RX 0000000b0000000b000000030000000000e27beebfb7e7fd
RX 040e08014dfc0001030105
TX 014dfc050838210004
RX 0000000b0000000b000000030000000000e27beebfb8720d
RX 040e08014dfc0000000000
TX 014dfc056c38210004
RX 0000000b0000000b000000030000000000e27beebfb8f49f
RX 040e08014dfc0010101010
TX 014dfc05d038210004
RX 0000000b0000000b000000030000000000e27beebfb970cc
RX 040e08014dfc000a0602fe
TX 014dfc053439210004
RX 0000000b0000000b000000030000000000e27beebfb9fa64
RX 040e08014dfc0004080c10
TX 014dfc059839210004
RX 0000000b0000000b000000030000000000e27beebfba7925
RX 040e08014dfc0000000003
TX 014dfc05fc39210004
RX 0000000b0000000b000000030000000000e27beebfbaf5de
RX 040e08014dfc00706f7d75
TX 014dfc05603a210004
RX 0000000b0000000b000000030000000000e27beebfbb6de7
RX 04
RX 0e08014dfc0071718d87
TX 014dfc05c43a210004
RX 0000000b0000000b000000030000000000e27beebfbbef45
RX 040e08014dfc0050615d54
TX 014dfc05283b210004
RX 0000000b0000000b000000030000000000e27beebfbc7293
RX 040e08014dfc0058666d60
TX 014dfc058c3b210004
RX 0000000b0000000b000000030000000000e27beebfbcf44e
RX 040e08014dfc000a07ee03
TX 014dfc05f03b210004
RX 0000000b0000000b000000030000000000e27beebfbd79e9
RX 040e08014dfc007d756d75
TX 014dfc05543c210004
RX 0000000b0000000b000000030000000000e27beebfbddc7d
RX 040e08014dfc008d877c81
TX 014dfc05b83c210004
RX 0000000b0000000b000000030000000000e27beebfbea57f
RX 040e08014dfc005d54575f
TX 014dfc051c3d210004
RX 0000000b0000000b000000030000000000e27beebfbf66d7
RX 040e08014dfc006d605c6c
TX 014dfc05803d210004
RX 0000000b0000000b000000030000000000e27beebfbfe3ac
RX 040e08014dfc000e782220
TX 014dfc05e43d210004
RX 0000000b0000000b000000030000000000e27beebfc06663
RX 040e08014dfc000d0d0d0d
TX 014dfc05483e210004
RX 0000000b0000000b000000030000000000e27beebfc0e82a
RX 040e08014dfc000000000d
TX 014dfc05ac3e210004
RX 0000000b0000000b000000030000000000e27beebfc16d41
RX 040e08014dfc00c4012c53
TX 014dfc05103f210004
RX 0000000b0000000b000000030000000000e27beebfc1f727
RX 040e08014dfc0000005d5d
TX 014dfc05743f210004
RX 0000000b0000000b000000030000000000e27beebfc27c7f
RX 040e08014dfc00c401ec53
TX 014dfc05d83f210004
RX 0000000b0000000b000000030000000000e27beebfc303b4
RX 040e08014dfc0038402100
TX 014dfc053c40210004
RX 0000000b0000000b000000030000000000e27beebfc37e0c
RX 040e08014dfc00c50104ec
TX 014dfc05a040210004
RX 0000000b0000000b000000030000000000e27beebfc403b0
RX 040e08014dfc000000005e
TX 014dfc050441210004
RX 0000000b0000000b000000030000000000e27beebfc48af4
RX 040e08014dfc0001c401ac
TX 014dfc056841210004
RX 0000000b0000000b000000030000000000e27beebfc50eab
RX 040e08014dfc00d90000e1
TX 014dfc05cc41210004
RX 0000000b0000000b000000030000000000e27beebfc58f7c
RX 040e08014dfc0001c4016c
TX 014dfc053042210004
RX 0000000b0000000b000000030000000000e27beebfc6124e
RX 040e08014dfc00e00000e8
TX 014dfc059442210004
RX 0000000b0000000b000000030000000000e27beebfc69521
RX 040e08014dfc0001648c58
TX 014dfc05f842210004
RX 0000000b0000000b000000030000000000e27beebfc799ac
RX 040e08014dfc00ff000301
TX 014dfc055c43210004
RX 0000000b0000000b000000030000000000e27beebfc7f96c
RX 040e08014dfc005f000055
TX 014dfc05c043210004
RX 0000000b0000000b000000030000000000e27beebfc8be02
RX 040e08014dfc0000001000
TX 014dfc052444210004
RX 0000000b0000000b000000030000000000e27beebfc97cd4
RX 040e08014dfc00f40757b8
TX 014dfc058844210004
RX 0000000b0000000b000000030000000000e27beebfc9fb7f
RX 040e08014dfc0000001400
TX 014dfc05ec44210004
RX 0000000b0000000b000000030000000000e27beebfca7b49
RX 040e08014dfc0000040000
TX 014dfc055045210004
RX 0000000b0000000b000000030000000000e27beebfcaf1bd
RX 040e08014dfc0000002c00
TX 014dfc05b445210004
RX 0000000b0000000b000000030000000000e27beebfcb4f74
RX 040e08014dfc0000100000
TX 014dfc051846210004
RX 0000000b0000000b000000030000000000e27beebfcbc8f9
RX 040e08014dfc007c0a50bc
TX 014dfc057c46210004
RX 0000000b0000000b000000030000000000e27beebfcc4c7c
RX 040e08014dfc0008040007
TX 014dfc05e046210004
RX 0000000b0000000b000000030000000000e27beebfcccdd1
RX 040e08014dfc0000000400
TX 014dfc054447210004
RX 0000000b0000000b000000030000000000e27beebfcd61ba
RX 040e08014dfc0000010301
TX 014dfc05a847210004
RX 0000000b0000000b000000030000000000e27beebfcdd9d4
RX 040e08014dfc0015032003
TX 014dfc050c48210004
RX 0000000b0000000b000000030000000000e27beebfce573c
RX 040e08014dfc00fb010502
TX 014dfc057048210004
RX 0000000b0000000b000000030000000000e27beebfced915
RX 040e08014dfc006a023402
TX 014dfc05d448210004
RX 0000000b0000000b000000030000000000e27beebfcf5e63
RX 040e08014dfc0003db03a2
TX 014dfc053849210004
RX 0000000b0000000b000000030000000000e27beebfcfe29a
RX 040e08014dfc0098492100
TX 014dfc059c49210004
RX 0000000b0000000b000000030000000000e27beebfd07253
RX 040e08014dfc0001a901e0
TX 014dfc05004a210004
RX 0000000b0000000b000000030000000000e27beebfd0f677
RX 040e08014dfc0003540397
TX 014dfc05644a210004
RX 0000000b0000000b000000030000000000e27beebfd177de
RX 040e08014dfc00402020e0
TX 014dfc05c84a210004
RX 0000000b0000000b000000030000000000e27beebfd1ecc8
RX 040e08014dfc00030105f8
TX 014dfc052c4b210004
RX 0000000b0000000b000000030000000000e27beebfd27677
RX 040e08014dfc0004000400
TX 014dfc05904b210004
RX 0000000b0000000b000000030000000000e27beebfd2f7ed
RX 040e08014dfc0062005100
TX 014dfc05f44b210004
RX 0000000b0000000b000000030000000000e27beebfd377f2
RX 040e08014dfc0002000200
TX 014dfc05584c210004
RX 0000000b0000000b000000030000000000e27beebfd3fa30
RX 040e08014dfc0000000000
TX 014dfc05bc4c210004
RX 0000000b0000000b000000030000000000e27beebfd47ac6
RX 040e08014dfc0098036000
TX 014dfc05204d210004
RX 0000000b0000000b000000030000000000e27beebfd4faa6
RX 040e08014dfc0000000000
TX 014dfc05844d210004
RX 0000000b0000000b000000030000000000e27beebfd57b25
RX 040e08014dfc002e61319e
TX 014dfc05e84d210004
RX 0000000b0000000b000000030000000000e27beebfd68943
RX 040e08014dfc0000000000
TX 014dfc054c4e210004
RX 0000000b0000000b000000030000000000e27beebfd6e941
RX 040e08014dfc0000000000
TX 014dfc05dc06200030
RX 0000003700000037000000030000000000e27beebfd76aa7
RX 040e34014dfc00fc0620000c011400b84d2100c44e2100120126e200000000000000001100c658e8af200040040a00a8622100a8622100
TX 014dfc05b84d210004
RX 0000000b0000000b000000030000000000e27beebfd7ee80
RX 040e08014dfc0000000000
TX 014dfc05c84e210004
RX 0000000b0000000b000000030000000000e27beebfd96b03
RX 040e08014dfc003f700000
TX 014dfc05d84f210004
RX 0000000b0000000b000000030000000000e27beebfda244b
RX 040e08014dfc0020533819
TX 014dfc05e850210004
RX 0000000b0000000b000000030000000000e27beebfda66a2
RX 040e08014dfc0013001001
TX 014dfc05f851210004
RX 0000000b0000000b000000030000000000e27beebfdb1dc1
RX 040e08014dfc0010010f25
TX 014dfc050853210004
RX 0000000b0000000b000000030000000000e27beebfdb7163
RX 040e08014dfc0000e25213
TX 014dfc051854210004
RX 0000000b0000000b000000030000000000e27beebfdbf1d4
RX 040e08014dfc00010f42ec
TX 014dfc052855210004
RX 0000000b0000000b000000030000000000e27beebfdc6f47
RX 040e08014dfc005194ac0a
TX 014dfc053856210004
RX 0000000b0000000b000000030000000000e27beebfdcb335
RX 040e08014dfc00da0700ba
TX 014dfc054857210004
RX 0000000b0000000b000000030000000000e27beebfdd2fda
RX 040e08014dfc000016f194
TX 014dfc055858210004
RX 0000000b0000000b000000030000000000e27beebfddad73
RX 040e08014dfc00f1feba00
TX 014dfc056859210004
RX 0000000b0000000b000000030000000000e27beebfde2c17
RX 040e08014dfc00be000022
TX 014dfc05785a210004
RX 0000000b0000000b000000030000000000e27beebfdeab0c
RX 040e08014dfc000010010f
TX 014dfc05885b210004
RX 0000000b0000000b000000030000000000e27beebfdf3561
RX 040e08014dfc000000e807
TX 014dfc05985c210004
RX 0000000b0000000b000000030000000000e27beebfdfb04a
RX 040e08014dfc00b8000072
TX 014dfc05a85d210004
RX 0000000b0000000b000000030000000000e27beebfe0406a
RX 040e08014dfc00030008f1
TX 014dfc05b85e210004
RX 0000000b0000000b000000030000000000e27beebfe0b02f
RX 040e08014dfc0087f04cbe
TX 014dfc05c85f210004
RX 0000000b0000000b000000030000000000e27beebfe13b72
RX 040e08014dfc0008b90000
TX 014dfc05d860210004
RX 0000000b0000000b000000030000000000e27beebfe1b919
RX 040e08014dfc000c01003a
TX 014dfc05e861210004
RX 0000000b0000000b000000030000000000e27beebfe23d75
RX 040e08014dfc001936c92b
TX 014dfc05fc06200030
RX 0000003700000037000000030000000000e27beebfe2d3c5
RX 040e34014dfc00e8af200040040a00a8622100a86221000a006a1400000000000000000a006b3f7be9b581f1177b3f21f7dd9df06e0ae2
TX 014dfc05a862210004
RX 0000000b0000000b000000030000000000e27beebfe3be35
RX 040e08014dfc00e8662100
TX 014dfc05ec66210004
RX 0000000b0000000b000000030000000000e27beebfe43b8f
RX 040e08014dfc00c350d687
TX 014dfc05306b210004
RX 0000000b0000000b000000030000000000e27beebfe4bb96
RX 040e08014dfc00e3c78237
TX 014dfc05746f210004
RX 0000000b0000000b000000030000000000e27beebfe53d42
RX 040e08014dfc0019aac824
TX 014dfc05b873210004
RX 0000000b0000000b000000030000000000e27beebfe5cb61
RX 040e08014dfc0069d31cf3
TX 014dfc05fc77210004
RX 0000000b0000000b000000030000000000e27beebfe62cc9
RX 040e08014dfc003d11e110
TX 014dfc05407c210004
RX 0000000b0000000b000000030000000000e27beebfe6edcb
RX 040e08014dfc0027e57831
TX 014dfc058480210004
RX 0000000b0000000b000000030000000000e27beebfe7abd5
RX 040e08014dfc00fcdaacf0
TX 014dfc05c884210004
RX 0000000b0000000b000000030000000000e27beebfe82d02
RX 040e08014dfc007ffa8079
TX 014dfc050c89210004
RX 0000000b0000000b000000030000000000e27beebfe8ad55
RX 040e08014dfc000de1ad99
TX 014dfc05e8af200030
RX 0000003700000037000000030000000000e27beebfe92db8
RX 040e34014dfc0008b020002c040400288d2100288d21000400000000000000000000000400000028b0200044041000d89d2100d89d2100
TX 014dfc05288d210004
RX 0000000b0000000b000000030000000000e27beebfea302d
RX 040e08014dfc0054912100
TX 014dfc055891210004
RX 0000000b0000000b000000030000000000e27beebfeab08c
RX 040e08014dfc00b437b423
TX 014dfc058895210004
RX 0000000b0000000b000000030000000000e27beebfeb6dbf
RX 040e08014dfc00f7ab1031
TX 014dfc05b899210004
RX 0000000b0000000b000000030000000000e27beebfec2d1e
RX 040e08014dfc001bbf2c9c
TX 014dfc0508b0200030
RX 0000003700000037000000030000000000e27beebfeced03
RX 040e34014dfc0028b0200044041000d89d2100d89d21001000000000000000000000001000000048b0200008010f0018e2210018e22100
TX 014dfc05d89d210004
RX 0000000b0000000b000000030000000000e27beebfee2b3a
RX 040e08014dfc001ca22100
TX 014dfc0520a2210004
RX 0000000b0000000b000000030000000000e27beebfeeb20b
RX 040e08014dfc0030c8795b
TX 014dfc0568a6210004
RX 0000000b0000000b000000030000000000e27beebfef3414
RX 040e08014dfc0061d5fb13
TX 014dfc05b0aa210004
RX 0000000b0000000b000000030000000000e27beebfefb326
RX 040e08014dfc008a3dc78e
TX 014dfc05f8ae210004
RX 0000000b0000000b000000030000000000e27beebff037e1
RX 040e08014dfc00c9dcb769
TX 014dfc0540b3210004
RX 0000000b0000000b000000030000000000e27beebff0bcf1
RX 040e08014dfc00e2722f0c
TX 014dfc0588b7210004
RX 0000000b0000000b000000030000000000e27beebff13a07
RX 040e08014dfc006c0b98fc
TX 014dfc05d0bb210004
RX 0000000b0000000b000000030000000000e27beebff1b621
RX 040e08014dfc00101603ea
TX 014dfc0518c0210004
RX 0000000b0000000b000000030000000000e27beebff238f0
RX 040e08014dfc005c915487
TX 014dfc0560c4210004
RX 0000000b0000000b000000030000000000e27beebff2c19c
RX 040e08014dfc00cb41f3b2
TX 014dfc05a8c8210004
RX 0000000b0000000b000000030000000000e27beebff343ab
RX 040e08014dfc00db93b18f
TX 014dfc05f0cc210004
RX 0000000b0000000b000000030000000000e27beebff3c416
RX 040e08014dfc005c5ca405
TX 014dfc0538d1210004
RX 0000000b0000000b000000030000000000e27beebff44634
RX 040e08014dfc00fd2d6388
TX 014dfc0580d5210004
RX 0000000b0000000b000000030000000000e27beebff49ff4
RX 040e08014dfc00c17ab6d8
TX 014dfc05c8d9210004
RX 0000000b0000000b000000030000000000e27beebff52099
RX 040e08014dfc00355e57a9
TX 014dfc0510de210004
RX 0000000b0000000b000000030000000000e27beebff59fe5
RX 040e08014dfc00e4b02aa9
TX 014dfc0528b0200030
RX 0000003700000037000000030000000000e27beebff623a6
RX 040e34014dfc0048b0200008010f0018e2210018e221000f00000000000000000000000f0000000000000008010f0090f1210090f12100
TX 014dfc0518e2210004
RX 0000000b0000000b000000030000000000e27beebff6a64a
RX 040e08014dfc0020e32100
TX 014dfc0524e3210004
RX 0000000b0000000b000000030000000000e27beebff72534
RX 040e08014dfc0000000000
TX 014dfc0530e4210004
RX 0000000b0000000b000000030000000000e27beebff7a5ab
RX 040e08014dfc0000000000
TX 014dfc053ce5210004
RX 0000000b0000000b000000030000000000e27beebff82694
RX 040e08014dfc0000000000
TX 014dfc0548e6210004
RX 0000000b0000000b000000030000000000e27beebff8a61a
RX 040e08014dfc0000000000
TX 014dfc0554e7210004
RX 0000000b0000000b000000030000000000e27beebff927c7
RX 040e08014dfc0000000000
TX 014dfc0560e8210004
RX 0000000b0000000b000000030000000000e27beebff9a88a
RX 040e08014dfc0000000000
TX 014dfc056ce9210004
RX 0000000b0000000b000000030000000000e27beebffa2be9
RX 040e08014dfc0000000000
TX 014dfc0578ea210004
RX 0000000b0000000b000000030000000000e27beebffb2a19
RX 040e08014dfc0000000000
TX 014dfc0584eb210004
RX 0000000b0000000b000000030000000000e27beebffba771
RX 040e08014dfc0000000000
TX 014dfc0590ec210004
RX 0000000b0000000b000000030000000000e27beebffc2aab
RX 040e08014dfc0000000000
TX 014dfc059ced210004
RX 0000000b0000000b000000030000000000e27beebffcab4a
RX 040e08014dfc0000000000
TX 014dfc05a8ee210004
RX 0000000b0000000b000000030000000000e27beebffd2dfe
RX 040e08014dfc0000000000
TX 014dfc05b4ef210004
RX 0000000b0000000b000000030000000000e27beebffdadbc
RX 040e08014dfc0000000000
TX 014dfc05c0f0210004
RX 0000000b0000000b000000030000000000e27beebffe2cdf
RX 040e08014dfc0000000000
TX 014dfc0548b0200030
RX 0000003700000037000000030000000000e27beebffeae8a
RX 040e34014dfc000000000008010f0090f1210090f121000f00000000000000000000000f00000000000000000000000000000000000000
TX 014dfc0590f1210004
RX 0000000b0000000b000000030000000000e27beebfff6dfb
RX 040e08014dfc0098f22100
TX 014dfc059cf2210004
RX 0000000b0000000b000000030000000000e27beec0002edc
RX 040e08014dfc0000000000
TX 014dfc05a8f3210004
RX 0000000b0000000b000000030000000000e27beec000acf4
RX 040e08014dfc0000000000
TX 014dfc05b4f4210004
RX 0000000b0000000b000000030000000000e27beec0012d10
RX 040e08014dfc0000000000
TX 014dfc05c0f5210004
RX 0000000b0000000b000000030000000000e27beec001b570
RX 040e08014dfc0000000000
TX 014dfc05ccf6210004
RX 0000000b0000000b000000030000000000e27beec0027363
RX 040e08014dfc0000000000
TX 014dfc05d8f7210004
RX 0000000b0000000b000000030000000000e27beec00333bd
RX 040e08014dfc0000000000
TX 014dfc05e4f8210004
RX 0000000b0000000b000000030000000000e27beec003b50a
RX 040e08014dfc0000000000
TX 014dfc05f0f9210004
RX 0000000b0000000b000000030000000000e27beec00452d7
RX 040e08014dfc0000000000
TX 014dfc05fcfa210004
RX 0000000b0000000b000000030000000000e27beec004d362
RX 040e08014dfc0000000000
TX 014dfc0508fc210004
RX 0000000b0000000b000000030000000000e27beec0055367
RX 040e08014dfc0000000000
TX 014dfc0514fd210004
RX 0000000b0000000b000000030000000000e27beec005da0f
RX 040e08014dfc0000000000
TX 014dfc0520fe210004
RX 0000000b0000000b000000030000000000e27beec0065a28
RX 040e08014dfc0000000000
TX 014dfc052cff210004
RX 0000000b0000000b000000030000000000e27beec006dc92
RX 040e08014dfc0000000000
TX 014dfc053800220004
RX 0000000b0000000b000000030000000000e27beec0075df4
RX 040e08014dfc0000000000
Socket closed
@@ -0,0 +1,749 @@
# info heap
TX 01011000
RX 0000000f0000000f000000030000000000e27beec8b0011f
RX 040e0c01011000094f01090f001a41
TX 014dfc057c06200004
RX 0000000b0000000b000000030000000000e27beec8b0ab75
RX 040e08014dfc009c062000
TX 014dfc059c06200030
RX 0000003700000037000000030000000000e27beec8b13874
RX 040e34014dfc00bc06200020006000782a2100d82a21005f02047300000000000000005c00b8ebdc06200060003e007836210078362100
TX 014dfc05782a210004
RX 0000000b0000000b000000030000000000e27beec8b1968c
RX 040e08014dfc00982a2100
TX 014dfc059c2a210004
RX 0000000b0000000b000000030000000000e27beec8b23944
RX 040e08014dfc0011287ed9
TX 014dfc05c02a210004
RX 0000000b0000000b000000030000000000e27beec8b29a21
RX 040e08014dfc00004dfc05
TX 014dfc05e42a210004
RX 0000000b0000000b000000030000000000e27beec8b33aae
RX 040e08014dfc00fc00004d
TX 014dfc05082b210004
RX 0000000b0000000b000000030000000000e27beec8b37f1a
RX 040e08014dfc00057e2f20
TX 014dfc052c2b210004
RX 0000000b0000000b000000030000000000e27beec8b3e241
RX 040e08014dfc0055382000
TX 014dfc05502b210004
RX 0000000b0000000b000000030000000000e27beec8b43f00
RX 040e08014dfc00ffff0100
TX 014dfc05742b210004
RX 0000000b0000000b000000030000000000e27beec8b46a99
RX 040e08014dfc0000000000
TX 014dfc05982b210004
RX 0000000b0000000b000000030000000000e27beec8b4b5d5
RX 040e08014dfc00b82b2100
TX 014dfc05bc2b210004
RX 0000000b0000000b000000030000000000e27beec8b4e534
RX 040e08014dfc000000ffff
TX 014dfc05e02b210004
RX 0000000b0000000b000000030000000000e27beec8b523d8
RX 040e08014dfc0000000010
TX 014dfc05042c210004
RX 0000000b0000000b000000030000000000e27beec8b561a8
RX 040e08014dfc00ffff0038
TX 014dfc05282c210004
RX 0000000b0000000b000000030000000000e27beec8b5a092
RX 040e08014dfc00e000004c
TX 014dfc054c2c210004
RX 0000000b0000000b000000030000000000e27beec8b5df4b
RX 040e08014dfc0065000000
TX 014dfc05702c210004
RX 0000000b0000000b000000030000000000e27beec8b63e6f
RX 040e08014dfc006500a800
TX 014dfc05942c210004
RX 0000000b0000000b000000030000000000e27beec8b69dc6
RX 040e08014dfc00d0010300
TX 014dfc05b82c210004
RX 0000000b0000000b000000030000000000e27beec8b6fe4f
RX 040e08014dfc00d82c2100
TX 014dfc05dc2c210004
RX 0000000b0000000b000000030000000000e27beec8b7a8cc
RX 040e08014dfc0000000000
TX 014dfc05002d210004
RX 0000000b0000000b000000030000000000e27beec8b7e80c
RX 040e08014dfc0000000000
TX 014dfc05242d210004
RX 0000000b0000000b000000030000000000e27beec8b8277b
RX 040e08014dfc00ffff80ff
TX 014dfc05482d210004
RX 0000000b0000000b000000030000000000e27beec8b86891
RX 040e08014dfc0000000500
TX 014dfc056c2d210004
RX 0000000b0000000b000000030000000000e27beec8b8a877
RX 040e08014dfc0000ec0301
TX 014dfc05902d210004
RX 0000000b0000000b000000030000000000e27beec8b8ebbf
RX 040e08014dfc0045432000
TX 014dfc05b42d210004
RX 0000000b0000000b000000030000000000e27beec8b92b29
RX 040e08014dfc0000010003
TX 014dfc05d82d210004
RX 0000000b0000000b000000030000000000e27beec8b96b91
RX 040e08014dfc00f82d2100
TX 014dfc05fc2d210004
RX 0000000b0000000b000000030000000000e27beec8b98474
RX 040e08014dfc0000ff0000
TX 014dfc05202e210004
RX 0000000b0000000b000000030000000000e27beec8b9c3f1
RX 040e08014dfc0000a80360
TX 014dfc05442e210004
RX 0000000b0000000b000000030000000000e27beec8ba06bd
RX 040e08014dfc0014000000
TX 014dfc05682e210004
RX 0000000b0000000b000000030000000000e27beec8ba44df
RX 040e08014dfc002f000000
TX 014dfc058c2e210004
RX 0000000b0000000b000000030000000000e27beec8ba835b
RX 040e08014dfc005f000000
TX 014dfc05b02e210004
RX 0000000b0000000b000000030000000000e27beec8bae302
RX 040e08014dfc002f000000
TX 014dfc05d42e210004
RX 0000000b0000000b000000030000000000e27beec8bb85b9
RX 040e08014dfc002f000000
TX 014dfc05f82e210004
RX 0000000b0000000b000000030000000000e27beec8bbc904
RX 040e08014dfc00182f2100
TX 014dfc051c2f210004
RX 0000000b0000000b000000030000000000e27beec8bbef32
RX 040e08014dfc0022000000
TX 014dfc05402f210004
RX 0000000b0000000b000000030000000000e27beec8bc4199
RX 040e08014dfc0000000000
TX 014dfc05642f210004
RX 0000000b0000000b000000030000000000e27beec8bca3a8
RX 040e08014dfc0000000000
TX 014dfc05882f210004
RX 0000000b0000000b000000030000000000e27beec8bcc56e
RX 040e08014dfc00002f0000
TX 014dfc05ac2f210004
RX 0000000b0000000b000000030000000000e27beec8bce06f
RX 040e08014dfc00006f0000
TX 014dfc05d02f210004
RX 0000000b0000000b000000030000000000e27beec8bd0d72
RX 040e08014dfc00002f0000
TX 014dfc05f42f210004
RX 0000000b0000000b000000030000000000e27beec8bd2064
RX 040e08014dfc00002f0000
TX 014dfc051830210004
RX 0000000b0000000b000000030000000000e27beec8bd3b8d
RX 040e08014dfc0038302100
TX 014dfc053c30210004
RX 0000000b0000000b000000030000000000e27beec8bd65e7
RX 040e08014dfc0000220000
TX 014dfc056030210004
RX 0000000b0000000b000000030000000000e27beec8bd7805
RX 040e08014dfc0000000000
TX 014dfc058430210004
RX 0000000b0000000b000000030000000000e27beec8bda250
RX 040e08014dfc0000000000
TX 014dfc05a830210004
RX 0000000b0000000b000000030000000000e27beec8bdb5ea
RX 040e08014dfc0006000000
TX 014dfc05cc30210004
RX 0000000b0000000b000000030000000000e27beec8bdcfa5
RX 040e08014dfc00034100ff
TX 014dfc05f030210004
RX 0000000b0000000b000000030000000000e27beec8bdfa1c
RX 040e08014dfc00a594a534
TX 014dfc051431210004
RX 0000000b0000000b000000030000000000e27beec8be0bd5
RX 040e08014dfc0000ff0080
TX 014dfc053831210004
RX 0000000b0000000b000000030000000000e27beec8be3670
RX 040e08014dfc0058312100
TX 014dfc055c31210004
RX 0000000b0000000b000000030000000000e27beec8be4d2b
RX 040e08014dfc00ffef3df1
TX 014dfc058031210004
RX 0000000b0000000b000000030000000000e27beec8be67d6
RX 040e08014dfc00034100ff
TX 014dfc05a431210004
RX 0000000b0000000b000000030000000000e27beec8be925f
RX 040e08014dfc002800ac01
TX 014dfc05c831210004
RX 0000000b0000000b000000030000000000e27beec8bea504
RX 040e08014dfc0028000000
TX 014dfc05ec31210004
RX 0000000b0000000b000000030000000000e27beec8bed190
RX 040e08014dfc0000400000
TX 014dfc051032210004
RX 0000000b0000000b000000030000000000e27beec8bf1d55
RX 040e08014dfc0000ffffff
TX 014dfc053432210004
RX 0000000b0000000b000000030000000000e27beec8bf4820
RX 040e08014dfc0000000005
TX 014dfc055832210004
RX 0000000b0000000b000000030000000000e27beec8bf65bc
RX 040e08014dfc0078322100
TX 014dfc057c32210004
RX 0000000b0000000b000000030000000000e27beec8bfa62f
RX 040e08014dfc0000002000
TX 014dfc05a032210004
RX 0000000b0000000b000000030000000000e27beec8bfe6ad
RX 040e08014dfc00a3ce1400
TX 014dfc05c432210004
RX 0000000b0000000b000000030000000000e27beec8c02906
RX 040e08014dfc00eb049005
TX 014dfc05e832210004
RX 0000000b0000000b000000030000000000e27beec8c068f2
RX 040e08014dfc0045064506
TX 014dfc050c33210004
RX 0000000b0000000b000000030000000000e27beec8c0c6e8
RX 040e08014dfc006004a104
TX 014dfc053033210004
RX 0000000b0000000b000000030000000000e27beec8c0ec44
RX 040e08014dfc0026052605
TX 014dfc055433210004
RX 0000000b0000000b000000030000000000e27beec8c14a80
RX 040e08014dfc00ffac02ff
TX 014dfc057833210004
RX 0000000b0000000b000000030000000000e27beec8c1aa6b
RX 040e08014dfc0098332100
TX 014dfc059c33210004
RX 0000000b0000000b000000030000000000e27beec8c1eda3
RX 040e08014dfc00c004ffc4
TX 014dfc05c033210004
RX 0000000b0000000b000000030000000000e27beec8c22ef6
RX 040e08014dfc003c323232
TX 014dfc05e433210004
RX 0000000b0000000b000000030000000000e27beec8c271ed
RX 040e08014dfc0010101010
TX 014dfc050834210004
RX 0000000b0000000b000000030000000000e27beec8c2d0c3
RX 040e08014dfc0077777777
TX 014dfc052c34210004
RX 0000000b0000000b000000030000000000e27beec8c2ffeb
RX 040e08014dfc006f6f6f0f
TX 014dfc055034210004
RX 0000000b0000000b000000030000000000e27beec8c34a6d
RX 040e08014dfc0074078c8c
TX 014dfc057434210004
RX 0000000b0000000b000000030000000000e27beec8c3a9f6
RX 040e08014dfc00ff060100
TX 014dfc059834210004
RX 0000000b0000000b000000030000000000e27beec8c44939
RX 040e08014dfc00b8342100
TX 014dfc05bc34210004
RX 0000000b0000000b000000030000000000e27beec8c4a8d6
RX 040e08014dfc009f747474
TX 014dfc05e034210004
RX 0000000b0000000b000000030000000000e27beec8c4e0e9
RX 040e08014dfc009f9f9f9f
TX 014dfc050435210004
RX 0000000b0000000b000000030000000000e27beec8c516f9
RX 040e08014dfc007f7f7f7f
TX 014dfc052835210004
RX 0000000b0000000b000000030000000000e27beec8c55b3f
RX 040e08014dfc007272727c
TX 014dfc054c35210004
RX 0000000b0000000b000000030000000000e27beec8c5ba24
RX 040e08014dfc0004eb04eb
TX 014dfc057035210004
RX 0000000b0000000b000000030000000000e27beec8c5f023
RX 040e08014dfc0006450645
TX 014dfc059435210004
RX 0000000b0000000b000000030000000000e27beec8c62f77
RX 040e08014dfc0004600460
TX 014dfc05b835210004
RX 0000000b0000000b000000030000000000e27beec8c68ce1
RX 040e08014dfc00d8352100
TX 014dfc05dc35210004
RX 0000000b0000000b000000030000000000e27beec8c6f0d3
RX 040e08014dfc00ffa802ff
TX 014dfc050036210004
RX 0000000b0000000b000000030000000000e27beec8c72cf5
RX 040e08014dfc0007ffc807
TX 014dfc052436210004
RX 0000000b0000000b000000030000000000e27beec8c76a48
RX 040e08014dfc00bc04ffc0
TX 014dfc054836210004
RX 0000000b0000000b000000030000000000e27beec8c7977a
RX 040e08014dfc003c3c3c3c
TX 014dfc056c36210004
RX 0000000b0000000b000000030000000000e27beec8c7d576
RX 040e08014dfc003c3c3c50
TX 014dfc059036210004
RX 0000000b0000000b000000030000000000e27beec8c816d5
RX 040e08014dfc002100d82a
TX 014dfc05b436210004
RX 0000000b0000000b000000030000000000e27beec8c85767
RX 040e08014dfc0021000000
TX 014dfc05d836210004
RX 0000000b0000000b000000030000000000e27beec8c89933
RX 040e08014dfc0038372100
TX 014dfc05fc36210004
RX 0000000b0000000b000000030000000000e27beec8c8def2
RX 040e08014dfc00077f0006
TX 014dfc052037210004
RX 0000000b0000000b000000030000000000e27beec8c91e7f
RX 040e08014dfc0005ca05ca
TX 014dfc054437210004
RX 0000000b0000000b000000030000000000e27beec8c95e25
RX 040e08014dfc00ff14ff14
TX 014dfc056837210004
RX 0000000b0000000b000000030000000000e27beec8c99e18
RX 040e08014dfc004b5a5a5a
TX 014dfc058c37210004
RX 0000000b0000000b000000030000000000e27beec8c9e152
RX 040e08014dfc0001030105
TX 014dfc05b037210004
RX 0000000b0000000b000000030000000000e27beec8ca1f93
RX 040e08014dfc00646c2000
TX 014dfc05d437210004
RX 0000000b0000000b000000030000000000e27beec8ca5f0c
RX 040e08014dfc00fdf9f5f1
TX 014dfc05bc06200030
RX 0000003700000037000000030000000000e27beec8cab627
RX 040e34014dfc00dc06200060003e0078362100783621003e02252100000000000000003d00d187fc0620000c011400b84d2100c44e2100
TX 014dfc057836210004
RX 0000000b0000000b000000030000000000e27beec8cb54a0
RX 040e08014dfc00d8362100
TX 014dfc05dc36210004
RX 0000000b0000000b000000030000000000e27beec8cbb5e5
RX 040e08014dfc00078c8c8c
TX 014dfc054037210004
RX 0000000b0000000b000000030000000000e27beec8cc553c
RX 040e08014dfc00ff14ff14
TX 014dfc05a437210004
RX 0000000b0000000b000000030000000000e27beec8ccb5d4
RX 040e08014dfc0001030105
TX 014dfc050838210004
RX 0000000b0000000b000000030000000000e27beec8cd1876
RX 040e08014dfc0000000000
TX 014dfc056c38210004
RX 0000000b0000000b000000030000000000e27beec8cd5de5
RX 040e08014dfc0010101010
TX 014dfc05d038210004
RX 0000000b0000000b000000030000000000e27beec8cd9d16
RX 040e08014dfc000a0602fe
TX 014dfc053439210004
RX 0000000b0000000b000000030000000000e27beec8cdddaa
RX 040e08014dfc0004080c10
TX 014dfc059839210004
RX 0000000b0000000b000000030000000000e27beec8ce306b
RX 040e08014dfc0000000003
TX 014dfc05fc39210004
RX 0000000b0000000b000000030000000000e27beec8cee84e
RX 040e08014dfc00706f7d75
TX 014dfc05603a210004
RX 0000000b0000000b000000030000000000e27beec8cff073
RX 040e08014dfc0071718d87
TX 014dfc05c43a210004
RX 0000000b0000000b000000030000000000e27beec8d0283c
RX 040e08014dfc0050615d54
TX 014dfc05283b210004
RX 0000000b0000000b000000030000000000e27beec8d07100
RX 040e08014dfc0058666d60
TX 014dfc058c3b210004
RX 0000000b0000000b000000030000000000e27beec8d10a0d
RX 040e08014dfc000a07ee03
TX 014dfc05f03b210004
RX 0000000b0000000b000000030000000000e27beec8d16ebd
RX 040e08014dfc007d756d75
TX 014dfc05543c210004
RX 0000000b0000000b000000030000000000e27beec8d1e50b
RX 040e08014dfc008d877c81
TX 014dfc05b83c210004
RX 0000000b0000000b000000030000000000e27beec8d26209
RX 040e08014dfc005d54575f
TX 014dfc051c3d210004
RX 0000000b0000000b000000030000000000e27beec8d2dcc5
RX 040e08014dfc006d605c6c
TX 014dfc05803d210004
RX 0000000b0000000b000000030000000000e27beec8d3255a
RX 040e08014dfc000e782220
TX 014dfc05e43d210004
RX 0000000b0000000b000000030000000000e27beec8d39f84
RX 040e08014dfc000d0d0d0d
TX 014dfc05483e210004
RX 0000000b0000000b000000030000000000e27beec8d42163
RX 040e08014dfc000000000d
TX 014dfc05ac3e210004
RX 0000000b0000000b000000030000000000e27beec8d46fa9
RX 040e08014dfc00c4012c53
TX 014dfc05103f210004
RX 0000000b0000000b000000030000000000e27beec8d4ee2f
RX 040e08014dfc0000005d5d
TX 014dfc05743f210004
RX 0000000b0000000b000000030000000000e27beec8d5a95c
RX 040e08014dfc00c401ec53
TX 014dfc05d83f210004
RX 0000000b0000000b000000030000000000e27beec8d6df0b
RX 040e08014dfc0038402100
TX 014dfc053c40210004
RX 0000000b0000000b000000030000000000e27beec8d760ab
RX 040e08014dfc00c50104ec
TX 014dfc05a040210004
RX 0000000b0000000b000000030000000000e27beec8d7dd87
RX 040e08014dfc000000005e
TX 014dfc050441210004
RX 0000000b0000000b000000030000000000e27beec8d8589b
RX 040e08014dfc0001c401ac
TX 014dfc056841210004
RX 0000000b0000000b000000030000000000e27beec8d8d892
RX 040e08014dfc00d90000e1
TX 014dfc05cc41210004
RX 0000000b0000000b000000030000000000e27beec8d9936f
RX 040e08014dfc0001c4016c
TX 014dfc053042210004
RX 0000000b0000000b000000030000000000e27beec8daca68
RX 040e08014dfc00e00000e8
TX 014dfc059442210004
RX 0000000b0000000b000000030000000000e27beec8db80fd
RX 040e08014dfc0001648c58
TX 014dfc05f842210004
RX 0000000b0000000b000000030000000000e27beec8dbc58e
RX 040e08014dfc00ff000301
TX 014dfc055c43210004
RX 0000000b0000000b000000030000000000e27beec8dc800d
RX 040e08014dfc005f000055
TX 014dfc05c043210004
RX 0000000b0000000b000000030000000000e27beec8dcc4b1
RX 040e08014dfc0000001000
TX 014dfc052444210004
RX 0000000b0000000b000000030000000000e27beec8dd4471
RX 040e08014dfc00f40757b8
TX 014dfc058844210004
RX 0000000b0000000b000000030000000000e27beec8de00c2
RX 040e08014dfc0000001400
TX 014dfc05ec44210004
RX 0000000b0000000b000000030000000000e27beec8debd7a
RX 040e08014dfc0000040000
TX 014dfc055045210004
RX 0000000b0000000b000000030000000000e27beec8df388c
RX 040e08014dfc0000002c00
TX 014dfc05b445210004
RX 0000000b0000000b000000030000000000e27beec8dfb15c
RX 040e08014dfc0000100000
TX 014dfc051846210004
RX 0000000b0000000b000000030000000000e27beec8e02d31
RX 040e08014dfc007c0a50bc
TX 014dfc057c46210004
RX 0000000b0000000b000000030000000000e27beec8e0f1d2
RX 040e08014dfc0008040007
TX 014dfc05e046210004
RX 0000000b0000000b000000030000000000e27beec8e135fd
RX 040e08014dfc0000000400
TX 014dfc054447210004
RX 0000000b0000000b000000030000000000e27beec8e2360e
RX 040e08014dfc0000010301
TX 014dfc05a847210004
RX 0000000b0000000b000000030000000000e27beec8e2b095
RX 040e08014dfc0015032003
TX 014dfc050c48210004
RX 0000000b0000000b000000030000000000e27beec8e36a06
RX 040e08014dfc00fb010502
TX 014dfc057048210004
RX 0000000b0000000b000000030000000000e27beec8e3b071
RX 040e08014dfc006a023402
TX 014dfc05d448210004
RX 0000000b0000000b000000030000000000e27beec8e42f49
RX 040e08014dfc0003db03a2
TX 014dfc053849210004
RX 0000000b0000000b000000030000000000e27beec8e4abd2
RX 040e08014dfc0098492100
TX 014dfc059c49210004
RX 0000000b0000000b000000030000000000e27beec8e56bb6
RX 040e08014dfc0001a901e0
TX 014dfc05004a210004
RX 0000000b0000000b000000030000000000e27beec8e62b2e
RX 040e08014dfc0003540397
TX 014dfc05644a210004
RX 0000000b0000000b000000030000000000e27beec8e65871
RX 040e08014dfc00402020e0
TX 014dfc05c84a210004
RX 0000000b0000000b000000030000000000e27beec8e6d1ac
RX 040e08014dfc00030105f8
TX 014dfc052c4b210004
RX 0000000b0000000b000000030000000000e27beec8e72cb7
RX 040e08014dfc0004000400
TX 014dfc05904b210004
RX 0000000b0000000b000000030000000000e27beec8e7c71f
RX 040e08014dfc0062005100
TX 014dfc05f44b210004
RX 0000000b0000000b000000030000000000e27beec8e82358
RX 04
RX 0e08014dfc0002000200
TX 014dfc05584c210004
RX 0000000b0000000b000000030000000000e27beec8e844c3
RX 040e08014dfc0000000000
TX 014dfc05bc4c210004
RX 0000000b0000000b000000030000000000e27beec8e8a3de
RX 040e08014dfc0098036000
TX 014dfc05204d210004
RX 0000000b0000000b000000030000000000e27beec8e949b9
RX 040e08014dfc0000000000
TX 014dfc05844d210004
RX 0000000b0000000b000000030000000000e27beec8e986dd
RX 040e08014dfc002e61319e
TX 014dfc05e84d210004
RX 0000000b0000000b000000030000000000e27beec8ea05c9
RX 040e08014dfc0000000000
TX 014dfc054c4e210004
RX 0000000b0000000b000000030000000000e27beec8ea8359
RX 040e08014dfc0000000000
TX 014dfc05dc06200030
RX 0000003700000037000000030000000000e27beec8eb0ffe
RX 040e34014dfc00fc0620000c011400b84d2100c44e2100120126e200000000000000001100c658e8af200040040a00a8622100a8622100
TX 014dfc05b84d210004
RX 0000000b0000000b000000030000000000e27beec8eb4ccb
RX 040e08014dfc0000000000
TX 014dfc05c84e210004
RX 0000000b0000000b000000030000000000e27beec8ebcd42
RX 040e08014dfc003f700000
TX 014dfc05d84f210004
RX 0000000b0000000b000000030000000000e27beec8ec0e9c
RX 040e08014dfc0020533819
TX 014dfc05e850210004
RX 0000000b0000000b000000030000000000e27beec8ec5f52
RX 040e08014dfc0013001001
TX 014dfc05f851210004
RX 0000000b0000000b000000030000000000e27beec8ecdb92
RX 040e08014dfc0010010f25
TX 014dfc050853210004
RX 0000000b0000000b000000030000000000e27beec8ed50ea
RX 040e08014dfc0000e25213
TX 014dfc051854210004
RX 0000000b0000000b000000030000000000e27beec8edd384
RX 04
RX 0e08014dfc00010f42ec
TX 014dfc052855210004
RX 0000000b0000000b000000030000000000e27beec8ee4bb8
RX 040e08014dfc005194ac0a
TX 014dfc053856210004
RX 0000000b0000000b000000030000000000e27beec8ee8701
RX 040e08014dfc00da0700ba
TX 014dfc054857210004
RX 0000000b0000000b000000030000000000e27beec8eec66b
RX 040e08014dfc000016f194
TX 014dfc055858210004
RX 0000000b0000000b000000030000000000e27beec8ef0557
RX 040e08014dfc00f1feba00
TX 014dfc056859210004
RX 0000000b0000000b000000030000000000e27beec8ef42d1
RX 040e08014dfc00be000022
TX 014dfc05785a210004
RX 0000000b0000000b000000030000000000e27beec8efa354
RX 040e08014dfc000010010f
TX 014dfc05885b210004
RX 0000000b0000000b000000030000000000e27beec8f02fd3
RX 040e08014dfc000000e807
TX 014dfc05985c210004
RX 0000000b0000000b000000030000000000e27beec8f0af07
RX 040e08014dfc00b8000072
TX 014dfc05a85d210004
RX 0000000b0000000b000000030000000000e27beec8f12d71
RX 040e08014dfc00030008f1
TX 014dfc05b85e210004
RX 0000000b0000000b000000030000000000e27beec8f18d3a
RX 040e08014dfc0087f04cbe
TX 014dfc05c85f210004
RX 0000000b0000000b000000030000000000e27beec8f20d89
RX 040e08014dfc0008b90000
TX 014dfc05d860210004
RX 0000000b0000000b000000030000000000e27beec8f28f39
RX 040e08014dfc000c01003a
TX 014dfc05e861210004
RX 0000000b0000000b000000030000000000e27beec8f34ef0
RX 040e08014dfc001936c92b
TX 014dfc05fc06200030
RX 0000003700000037000000030000000000e27beec8f4887c
RX 040e34014dfc00e8af200040040a00a8622100a86221000a006a1400000000000000000a006b3f7be9b581f1177b3f21f7dd9df06e0ae2
TX 014dfc05a862210004
RX 0000000b0000000b000000030000000000e27beec8f5452d
RX 040e08014dfc00e8662100
TX 014dfc05ec66210004
RX 0000000b0000000b000000030000000000e27beec8f587b4
RX 040e08014dfc00c350d687
TX 014dfc05306b210004
RX 0000000b0000000b000000030000000000e27beec8f603b5
RX 040e08014dfc00e3c78237
TX 014dfc05746f210004
RX 0000000b0000000b000000030000000000e27beec8f6c570
RX 040e08014dfc0019aac824
TX 014dfc05b873210004
RX 0000000b0000000b000000030000000000e27beec8f78596
RX 040e08014dfc0069d31cf3
TX 014dfc05fc77210004
RX 0000000b0000000b000000030000000000e27beec8f83e69
RX 040e08014dfc003d11e110
TX 014dfc05407c210004
RX 0000000b0000000b000000030000000000e27beec8f87ff8
RX 040e08014dfc0027e57831
TX 014dfc058480210004
RX 0000000b0000000b000000030000000000e27beec8f90b52
RX 040e08014dfc00fcdaacf0
TX 014dfc05c884210004
RX 0000000b0000000b000000030000000000e27beec8f9836b
RX 040e08014dfc007ffa8079
TX 014dfc050c89210004
RX 0000000b0000000b000000030000000000e27beec8f9fb7d
RX 040e08014dfc000de1ad99
TX 014dfc05e8af200030
RX 0000003700000037000000030000000000e27beec8fa77a3
RX 040e34014dfc0008b020002c040400288d2100288d21000400000000000000000000000400000028b0200044041000d89d2100d89d2100
TX 014dfc05288d210004
RX 0000000b0000000b000000030000000000e27beec8faf0d8
RX 040e08014dfc0054912100
TX 014dfc055891210004
RX 0000000b0000000b000000030000000000e27beec8fba912
RX 040e08014dfc00b437b423
TX 014dfc058895210004
RX 0000000b0000000b000000030000000000e27beec8fce262
RX 040e08014dfc00f7ab1031
TX 014dfc05b899210004
RX 0000000b0000000b000000030000000000e27beec8fd9559
RX 040e08014dfc001bbf2c9c
TX 014dfc0508b0200030
RX 0000003700000037000000030000000000e27beec8fde150
RX 040e34014dfc0028b0200044041000d89d2100d89d21001000000000000000000000001000000048b0200008010f0018e2210018e22100
TX 014dfc05d89d210004
RX 0000000b0000000b000000030000000000e27beec8fe5bbf
RX 040e08014dfc001ca22100
TX 014dfc0520a2210004
RX 0000000b0000000b000000030000000000e27beec8fed310
RX 040e08014dfc0030c8795b
TX 014dfc0568a6210004
RX 0000000b0000000b000000030000000000e27beec8ff4e98
RX 040e08014dfc0061d5fb13
TX 014dfc05b0aa210004
RX 0000000b0000000b000000030000000000e27beec9000666
RX 040e08014dfc008a3dc78e
TX 014dfc05f8ae210004
RX 0000000b0000000b000000030000000000e27beec9013b64
RX 040e08014dfc00c9dcb769
TX 014dfc0540b3210004
RX 0000000b0000000b000000030000000000e27beec901f5f6
RX 040e08014dfc00e2722f0c
TX 014dfc0588b7210004
RX 0000000b0000000b000000030000000000e27beec90243ad
RX 040e08014dfc006c0b98fc
TX 014dfc05d0bb210004
RX 0000000b0000000b000000030000000000e27beec902bba8
RX 040e08014dfc00101603ea
TX 014dfc0518c0210004
RX 0000000b0000000b000000030000000000e27beec9033534
RX 040e08014dfc005c915487
TX 014dfc0560c4210004
RX 0000000b0000000b000000030000000000e27beec903b1b4
RX 040e08014dfc00cb41f3b2
TX 014dfc05a8c8210004
RX 0000000b0000000b000000030000000000e27beec903f22c
RX 040e08014dfc00db93b18f
TX 014dfc05f0cc210004
RX 0000000b0000000b000000030000000000e27beec9046edb
RX 040e08014dfc005c5ca405
TX 014dfc0538d1210004
RX 0000000b0000000b000000030000000000e27beec904f985
RX 040e08014dfc00fd2d6388
TX 014dfc0580d5210004
RX 0000000b0000000b000000030000000000e27beec9056232
RX 040e08014dfc00c17ab6d8
TX 014dfc05c8d9210004
RX 0000000b0000000b000000030000000000e27beec9059ba7
RX 040e08014dfc00355e57a9
TX 014dfc0510de210004
RX 0000000b0000000b000000030000000000e27beec9060d61
RX 040e08014dfc00e4b02aa9
TX 014dfc0528b0200030
RX 0000003700000037000000030000000000e27beec90675ed
RX 040e34014dfc0048b0200008010f0018e2210018e221000f00000000000000000000000f0000000000000008010f0090f1210090f12100
TX 014dfc0518e2210004
RX 0000000b0000000b000000030000000000e27beec906f599
RX 040e08014dfc0020e32100
TX 014dfc0524e3210004
RX 0000000b0000000b000000030000000000e27beec9077a41
RX 040e08014dfc0000000000
TX 014dfc0530e4210004
RX 0000000b0000000b000000030000000000e27beec90800c4
RX 040e08014dfc0000000000
TX 014dfc053ce5210004
RX 0000000b0000000b000000030000000000e27beec9087b8b
RX 040e08014dfc0000000000
TX 014dfc0548e6210004
RX 0000000b0000000b000000030000000000e27beec908f918
RX 040e08014dfc0000000000
TX 014dfc0554e7210004
RX 0000000b0000000b000000030000000000e27beec9097805
RX 040e08014dfc0000000000
TX 014dfc0560e8210004
RX 0000000b0000000b000000030000000000e27beec90a7c3c
RX 040e08014dfc0000000000
TX 014dfc056ce9210004
RX 0000000b0000000b000000030000000000e27beec90af9a6
RX 040e08014dfc0000000000
TX 014dfc0578ea210004
RX 0000000b0000000b000000030000000000e27beec90b7674
RX 040e08014dfc0000000000
TX 014dfc0584eb210004
RX 0000000b0000000b000000030000000000e27beec90c3303
RX 040e08014dfc0000000000
TX 014dfc0590ec210004
RX 0000000b0000000b000000030000000000e27beec90d6914
RX 04
RX 0e08014dfc0000000000
TX 014dfc059ced210004
RX 0000000b0000000b000000030000000000e27beec90e27ef
RX 040e08014dfc0000000000
TX 014dfc05a8ee210004
RX 0000000b0000000b000000030000000000e27beec90f63b6
RX 040e08014dfc0000000000
TX 014dfc05b4ef210004
RX 0000000b0000000b000000030000000000e27beec91021bb
RX 040e08014dfc0000000000
TX 014dfc05c0f0210004
RX 0000000b0000000b000000030000000000e27beec9106e47
RX 040e08014dfc0000000000
TX 014dfc0548b0200030
RX 0000003700000037000000030000000000e27beec910ef09
RX 040e34014dfc000000000008010f0090f1210090f121000f00000000000000000000000f00000000000000000000000000000000000000
TX 014dfc0590f1210004
RX 0000000b0000000b000000030000000000e27beec9117983
RX 040e08014dfc0098f22100
TX 014dfc059cf2210004
RX 0000000b0000000b000000030000000000e27beec911f917
RX 040e08014dfc0000000000
TX 014dfc05a8f3210004
RX 0000000b0000000b000000030000000000e27beec9127344
RX 040e08014dfc0000000000
TX 014dfc05b4f4210004
RX 0000000b0000000b000000030000000000e27beec912f035
RX 040e08014dfc0000000000
TX 014dfc05c0f5210004
RX 0000000b0000000b000000030000000000e27beec9136ada
RX 040e08014dfc0000000000
TX 014dfc05ccf6210004
RX 0000000b0000000b000000030000000000e27beec913e4a2
RX 040e08014dfc0000000000
TX 014dfc05d8f7210004
RX 0000000b0000000b000000030000000000e27beec9149bb2
RX 040e08014dfc0000000000
TX 014dfc05e4f8210004
RX 0000000b0000000b000000030000000000e27beec9155ada
RX 040e08014dfc0000000000
TX 014dfc05f0f9210004
RX 0000000b0000000b000000030000000000e27beec91614ec
RX 040e08014dfc0000000000
TX 014dfc05fcfa210004
RX 0000000b0000000b000000030000000000e27beec916d569
RX 040e08014dfc0000000000
TX 014dfc0508fc210004
RX 0000000b0000000b000000030000000000e27beec9174ca5
RX 040e08014dfc0000000000
TX 014dfc0514fd210004
RX 0000000b0000000b000000030000000000e27beec918072d
RX 040e08014dfc0000000000
TX 014dfc0520fe210004
RX 0000000b0000000b000000030000000000e27beec9184a5a
RX 040e08014dfc0000000000
TX 014dfc052cff210004
RX 0000000b0000000b000000030000000000e27beec918c2f1
RX 040e08014dfc0000000000
TX 014dfc053800220004
RX 0000000b0000000b000000030000000000e27beec9197cf2
RX 040e08014dfc0000000000
Socket closed
@@ -0,0 +1,673 @@
#info heap verbose
TX 010300011000
RX 00000004
RX 00000004
RX 00000002
RX 00000000
RX 00e269c2
RX 24f45277
RX 01
RX 011000
RX 0000000f
RX 0000000f
RX 00000003
RX 00000000
RX 00e269c2
RX 24f49bf7
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc059430200004
RX 000000030000000300000003
RX 0000000000e269c224f66ff7
RX 07f001
RX 00000009
RX 00000009000000020000000000e269c2
RX 24f6d31f
RX 014dfc059430200004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 24f70f36
RX 040e08014dfc00c85d2000
TX 0108004dfc05c85d200030
RX 0000000900000009000000020000000000e269c224f82dac
RX 014dfc05c85d200030
RX 00000037
RX 00000037000000030000000000e269c2
RX 24f8351d
RX 040e34014dfc00434f4c42000000000700000008000000a4792100a479210020010000200000000000000000000000f85d200068ec2000
TX 0108004dfc05a479210004
RX 0000000900000009000000020000000000e269c224f96863
RX 01
RX 4dfc05a479210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 24f96f9b
RX 040e08014dfc00c85d2000
TX 0108004dfc05c879210004
RX 0000000900000009000000020000000000e269c224fa033d
RX 014dfc05c879210004
RX 0000000b0000000b
RX 000000030000000000e269c224fa0a66
RX 040e08014dfc00587a2100
TX 0108004dfc05ec79210004
RX 00000009000000090000000200000000
RX 00e269c224faa230
RX 01
RX 4dfc05ec79210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 24fac81f
RX 040e08014dfc007c7a2100
TX 0108004dfc05107a210004
RX 0000000900000009000000020000000000e269c224fbaae4
RX 014dfc05107a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 24fbd8f3
RX 040e08014dfc00c8792100
TX 0108004dfc05347a210004
RX 0000000900000009000000020000000000e269c224fd9b54
RX 014dfc05347a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 24fdce26
RX 040e08014dfc00c85d2000
TX 0108004dfc05587a210004
RX 0000000900000009000000020000000000e269c224ff1027
RX 01
RX 4dfc05587a210004
RX 0000000b0000000b
RX 000000030000000000e269c224ff3f90
RX 040e08014dfc00ec792100
TX 0108004dfc057c7a210004
RX 000000090000000900000002
RX 0000000000e269c225010a6e
RX 014dfc057c7a210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25013f2d
RX 040e08014dfc00a07a2100
TX 0108004dfc05a07a210004
RX 0000000900000009000000020000000000e269c22502fae6
RX 01
RX 4dfc05a07a210004
RX 0000000b0000000b00000003
RX 0000000000e269c225032df8
RX 04
RX 0e08014dfc0000000000
TX 0108004dfc05f85d200030
RX 0000000900000009000000020000000000e269c2250476e7
RX 014dfc05f85d200030
RX 00000037
RX 00000037000000030000000000e269c2
RX 2504a4d2
RX 040e34014dfc00434f4c42000000000700000008000000087b2100c47a210020020000400000000000000000000000285e2000c85d2000
TX 0108004dfc05c47a210004
RX 000000090000000900000002
RX 0000000000e269c225066c76
RX 014dfc05c47a210004
RX 0000000b
RX 0000000b000000030000000000e269c22506a5f8
RX 040e08014dfc00087b2100
TX 0108004dfc05087b210004
RX 0000000900000009000000020000000000e269c22507e065
RX 014dfc05087b210004
RX 0000000b0000000b00000003
RX 0000000000e269c225080920
RX 04
RX 0e08014dfc004c7b2100
TX 0108004dfc054c7b210004
RX 000000090000000900000002
RX 0000000000e269c2
RX 2509ddbe
RX 014dfc054c7b210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2250a11f3
RX 04
RX 0e08014dfc00907b2100
TX 0108004dfc05907b210004
RX 0000000900000009000000020000000000e269c2250b50dd
RX 01
RX 4dfc05907b210004
RX 0000000b0000000b00000003
RX 0000000000e269c2250b8020
RX 040e08014dfc00d47b2100
TX 0108004dfc05d47b210004
RX 0000000900000009000000020000000000e269c2
RX 250d460e
RX 014dfc05d47b210004
RX 0000000b0000000b00000003
RX 0000000000e269c2250d78d8
RX 04
RX 0e08014dfc00187c2100
TX 0108004dfc05187c210004
RX 0000000900000009000000020000000000e269c2
RX 250f38a4
RX 014dfc05187c210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2250f6cd6
RX 04
RX 0e08014dfc005c7c2100
TX 0108004dfc055c7c210004
RX 0000000900000009000000020000000000e269c2
RX 2510b373
RX 014dfc055c7c210004
RX 0000000b0000000b00000003
RX 0000000000e269c22510e1a3
RX 04
RX 0e08014dfc00a07c2100
TX 0108004dfc05a07c210004
RX 000000090000000900000002
RX 0000000000e269c22512a9bc
RX 014dfc05a07c210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22512f3eb
RX 040e08014dfc0000000000
TX 0108004dfc05285e200030
RX 000000090000000900000002
RX 0000000000e269c22513f86b
RX 014dfc05285e200030
RX 0000003700000037000000030000000000e269c2251400aa
RX 040e34014dfc00434f4c42000000000a0000000a000000e47c2100e47c2100780a0000080100000000000000000000885e2000f85d2000
TX 0108004dfc05e47c210004
RX 000000090000000900000002
RX 0000000000e269c225146c16
RX 014dfc05e47c210004
RX 0000000b0000000b000000030000000000e269c225147351
RX 04
RX 0e08014dfc00f07d2100
TX 0108004dfc05f07d210004
RX 00000009000000090000000200000000
RX 00e269c22514e723
RX 014dfc05f07d210004
RX 0000000b0000000b000000030000000000e269c2
RX 2514ef3f
RX 040e08014dfc00fc7e2100
TX 0108004dfc05fc7e210004
RX 0000000900000009
RX 000000020000000000e269c2251561bc
RX 014dfc05fc7e210004
RX 0000000b0000000b0000000300000000
RX 00e269c2251569c1
RX 040e08014dfc0008802100
TX 0108004dfc050880210004
RX 0000000900000009000000020000000000e269c225158f04
RX 01
RX 4dfc050880210004
RX 0000000b0000000b00000003
RX 0000000000e269c225159627
RX 04
RX 0e08014dfc0014812100
TX 0108004dfc051481210004
RX 0000000900000009000000020000000000e269c225165165
RX 014dfc051481210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c225165ecc
RX 04
RX 0e08014dfc0020822100
TX 0108004dfc052082210004
RX 0000000900000009
RX 000000020000000000e269c22517a5b9
RX 014dfc052082210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22517dfcd
RX 04
RX 0e08014dfc002c832100
TX 0108004dfc052c83210004
RX 0000000900000009
RX 000000020000000000e269c2251932d1
RX 014dfc052c83210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 2519667f
RX 040e08014dfc0038842100
TX 0108004dfc053884210004
RX 000000090000000900000002
RX 0000000000e269c2251b2a5a
RX 014dfc053884210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 251b62c2
RX 040e08014dfc0044852100
TX 0108004dfc054485210004
RX 0000000900000009000000020000000000e269c2
RX 251ca298
RX 014dfc054485210004
RX 0000000b
RX 0000000b00000003
RX 0000000000e269c2251ccf7d
RX 04
RX 0e08014dfc0050862100
TX 0108004dfc055086210004
RX 0000000900000009000000020000000000e269c2251e9dc9
RX 014dfc055086210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 251eca4e
RX 040e08014dfc0000000000
TX 0108004dfc05885e200030
RX 0000000900000009000000020000000000e269c225200d49
RX 014dfc05885e200030
RX 0000003700000037
RX 000000030000000000e269c2
RX 25203a17
RX 040e34014dfc00434f4c4200000000040000000400000024c6210024c62100b0100000280400000000000000000000585e2000285e2000
TX 0108004dfc0524c6210004
RX 0000000900000009000000020000000000e269c22522011f
RX 01
RX 4dfc0524c6210004
RX 0000000b0000000b
RX 000000030000000000e269c22522345d
RX 040e08014dfc0050ca2100
TX 0108004dfc0550ca210004
RX 0000000900000009
RX 000000020000000000e269c225237d84
RX 014dfc0550ca210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 2523b746
RX 040e08014dfc007cce2100
TX 0108004dfc057cce210004
RX 0000000900000009
RX 000000020000000000e269c225257404
RX 014dfc057cce210004
RX 0000000b0000000b0000000300000000
RX 00e269c22525acbe
RX 04
RX 0e08014dfc00a8d22100
TX 0108004dfc05a8d2210004
RX 000000090000000900000002
RX 0000000000e269c225276a22
RX 014dfc05a8d2210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22527a257
RX 040e08014dfc0000000000
TX 0108004dfc05585e200030
RX 0000000900000009
RX 000000020000000000e269c2
RX 2528e2d0
RX 014dfc05585e200030
RX 00000037000000370000000300000000
RX 00e269c2252917ea
RX 040e34014dfc00434f4c42000000001000000010000000d4d62100d4d621008044000044040000000000000000000038ec2000885e2000
TX 0108004dfc05d4d6210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 252ae41d
RX 014dfc05d4d6210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 252b1c39
RX 040e08014dfc001cdb2100
TX 0108004dfc051cdb210004
RX 0000000900000009000000020000000000e269c2252c605d
RX 014dfc051cdb210004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 252c8cf9
RX 040e08014dfc0064df2100
TX 0108004dfc0564df210004
RX 0000000900000009000000020000000000e269c2252e57a3
RX 014dfc0564df210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 252e85a1
RX 040e08014dfc00ace32100
TX 0108004dfc05ace3210004
RX 0000000900000009000000020000000000e269c2252fc9e0
RX 014dfc05ace3210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 252ffd27
RX 040e08014dfc00f4e72100
TX 0108004dfc05f4e7210004
RX 0000000900000009000000020000000000e269c2
RX 2531c79c
RX 014dfc05f4e7210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22531f9dc
RX 04
RX 0e08014dfc003cec2100
TX 0108004dfc053cec210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 2533400d
RX 014dfc053cec210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22533748a
RX 04
RX 0e08014dfc0084f02100
TX 0108004dfc0584f0210004
RX 0000000900000009
RX 000000020000000000e269c22535357b
RX 014dfc0584f0210004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25356eb9
RX 040e08014dfc00ccf42100
TX 0108004dfc05ccf4210004
RX 0000000900000009000000020000000000e269c225372b81
RX 014dfc05ccf4210004
RX 0000000b0000000b
RX 000000030000000000e269c225375dab
RX 040e08014dfc0014f92100
TX 0108004dfc0514f9210004
RX 0000000900000009
RX 000000020000000000e269c2
RX 2538a25a
RX 014dfc0514f9210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c22538d60a
RX 040e08014dfc005cfd2100
TX 0108004dfc055cfd210004
RX 0000000900000009000000020000000000e269c2
RX 253a9899
RX 014dfc055cfd210004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2253acac3
RX 040e08014dfc00a4012200
TX 0108004dfc05a401220004
RX 00000009000000090000000200000000
RX 00e269c2253c0cd4
RX 014dfc05a401220004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 253c44fa
RX 040e08014dfc00ec052200
TX 0108004dfc05ec05220004
RX 000000090000000900000002
RX 0000000000e269c2253e065b
RX 014dfc05ec05220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 253e3a13
RX 040e08014dfc00340a2200
TX 0108004dfc05340a220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 253f7e4c
RX 014dfc05340a220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 253fb262
RX 040e08014dfc007c0e2200
TX 0108004dfc057c0e220004
RX 00000009
RX 00000009000000020000000000e269c225417f42
RX 014dfc057c0e220004
RX 0000000b0000000b0000000300000000
RX 00e269c2254263d7
RX 04
RX 0e08014dfc00c4122200
TX 0108004dfc05c412220004
RX 0000000900000009
RX 000000020000000000e269c225437d34
RX 014dfc05c412220004
RX 0000000b0000000b000000030000000000e269c2
RX 254385a8
RX 040e08014dfc000c172200
TX 0108004dfc050c17220004
RX 00000009000000090000000200000000
RX 00e269c22543f724
RX 014dfc050c17220004
RX 0000000b0000000b0000000300000000
RX 00e269c22543fe75
RX 040e08014dfc0000000000
TX 0108004dfc0538ec200030
RX 000000090000000900000002
RX 0000000000e269c22544730f
RX 014dfc0538ec200030
RX 00000037000000370000000300000000
RX 00e269c225447a7b
RX 040e34014dfc00434f4c42000000000f0000000f000000541b2200541b22009402000028000000000000000000000068ec2000585e2000
TX 0108004dfc05541b220004
RX 00000009000000090000000200000000
RX 00e269c2254530d1
RX 014dfc05541b220004
RX 0000000b0000000b000000030000000000e269c22545384f
RX 040e08014dfc00801b2200
TX 0108004dfc05801b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 25468d97
RX 014dfc05801b220004
RX 0000000b0000000b00000003
RX 0000000000e269c22546c77f
RX 04
RX 0e08014dfc00ac1b2200
TX 0108004dfc05ac1b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 25481812
RX 014dfc05ac1b220004
RX 0000000b0000000b0000000300000000
RX 00e269c2254851b1
RX 040e08014dfc00d81b2200
TX 0108004dfc05d81b220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 254a0d3f
RX 014dfc05d81b220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2254a4661
RX 04
RX 0e08014dfc00041c2200
TX 0108004dfc05041c220004
RX 000000090000000900000002
RX 0000000000e269c2254b81c3
RX 014dfc05041c220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 254bb640
RX 040e08014dfc00301c2200
TX 0108004dfc05301c220004
RX 0000000900000009000000020000000000e269c2254d7a87
RX 014dfc05301c220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 254da773
RX 040e08014dfc005c1c2200
TX 0108004dfc055c1c220004
RX 0000000900000009000000020000000000e269c2254eeefc
RX 014dfc055c1c220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 254f1cc7
RX 040e08014dfc00881c2200
TX 0108004dfc05881c220004
RX 0000000900000009
RX 000000020000000000e269c22550e1a7
RX 014dfc05881c220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25511a28
RX 040e08014dfc00b41c2200
TX 0108004dfc05b41c220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 2552563c
RX 014dfc05b41c220004
RX 0000000b0000000b00000003
RX 0000000000e269c225528970
RX 040e08014dfc00e01c2200
TX 0108004dfc05e01c220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 25545148
RX 014dfc05e01c220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 255495c8
RX 040e08014dfc000c1d2200
TX 0108004dfc050c1d220004
RX 000000090000000900000002
RX 0000000000e269c225561274
RX 014dfc050c1d220004
RX 0000000b0000000b000000030000000000e269c225561a14
RX 040e08014dfc00381d2200
TX 0108004dfc05381d220004
RX 000000090000000900000002
RX 0000000000e269c22556cc48
RX 014dfc05381d220004
RX 0000000b0000000b0000000300000000
RX 00e269c22556d4c1
RX 040e08014dfc00641d2200
TX 0108004dfc05641d220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 255728b3
RX 014dfc05641d220004
RX 0000000b0000000b00000003
RX 0000000000e269c2255730da
RX 040e08014dfc00901d2200
TX 0108004dfc05901d220004
RX 0000000900000009000000020000000000e269c2255764bf
RX 014dfc05901d220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25576be4
RX 040e08014dfc00bc1d2200
TX 0108004dfc05bc1d220004
RX 000000090000000900000002
RX 0000000000e269c225580968
RX 014dfc05bc1d220004
RX 0000000b
RX 0000000b000000030000000000e269c22558253a
RX 040e08014dfc0000000000
TX 0108004dfc0568ec200030
RX 00000009000000090000000200000000
RX 00e269c2255917c5
RX 01
RX 4dfc0568ec200030
RX 0000003700000037
RX 000000030000000000e269c225594aea
RX 040e34014dfc00434f4c42000000000f0000000f000000e81d2200e81d22001c020000200000000000000000000000c85d200038ec2000
TX 0108004dfc05e81d220004
RX 0000000900000009000000020000000000e269c2255b0b9f
RX 01
RX 4dfc05e81d220004
RX 0000000b0000000b
RX 000000030000000000e269c2255b3e4e
RX 040e08014dfc000c1e2200
TX 0108004dfc050c1e220004
RX 0000000900000009000000020000000000e269c2255c8003
RX 01
RX 4dfc050c1e220004
RX 0000000b0000000b
RX 000000030000000000e269c2255cae79
RX 040e08014dfc00301e2200
TX 0108004dfc05301e220004
RX 0000000900000009000000020000000000e269c2255e7bc6
RX 01
RX 4dfc05301e220004
RX 0000000b0000000b
RX 000000030000000000e269c2
RX 255eaed6
RX 040e08014dfc00541e2200
TX 0108004dfc05541e220004
RX 0000000900000009000000020000000000e269c225607f9d
RX 014dfc05541e220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 2560adc6
RX 040e08014dfc00781e2200
TX 0108004dfc05781e220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 2561ea26
RX 014dfc05781e220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25621fe0
RX 040e08014dfc009c1e2200
TX 0108004dfc059c1e220004
RX 0000000900000009
RX 0000000200000000
RX 00e269c22563e445
RX 014dfc059c1e220004
RX 0000000b0000000b0000000300000000
RX 00e269c22564180f
RX 040e08014dfc00c01e2200
TX 0108004dfc05c01e220004
RX 0000000900000009000000020000000000e269c2
RX 25655a07
RX 014dfc05c01e220004
RX 0000000b0000000b0000000300000000
RX 00e269c2256587be
RX 04
RX 0e08014dfc00e41e2200
TX 0108004dfc05e41e220004
RX 0000000900000009000000020000000000e269c225674d06
RX 014dfc05e41e220004
RX 0000000b0000000b
RX 000000030000000000e269c225677f9c
RX 040e08014dfc00081f2200
TX 0108004dfc05081f220004
RX 0000000900000009
RX 000000020000000000e269c2
RX 2568c3c6
RX 014dfc05081f220004
RX 0000000b0000000b00000003
RX 0000000000e269c22568f76f
RX 04
RX 0e08014dfc002c1f2200
TX 0108004dfc052c1f220004
RX 000000090000000900000002
RX 0000000000e269c2256aba6f
RX 014dfc052c1f220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2256aee2f
RX 040e08014dfc00501f2200
TX 0108004dfc05501f220004
RX 0000000900000009000000020000000000e269c2
RX 256cb09e
RX 014dfc05501f220004
RX 0000000b
RX 0000000b0000000300000000
RX 00e269c2256ce32b
RX 04
RX 0e08014dfc00741f2200
TX 0108004dfc05741f220004
RX 0000000900000009000000020000000000e269c2256e2691
RX 014dfc05741f220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 256e5586
RX 040e08014dfc00981f2200
TX 0108004dfc05981f220004
RX 0000000900000009
RX 000000020000000000e269c2257024e1
RX 014dfc05981f220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 25705949
RX 040e08014dfc00bc1f2200
TX 0108004dfc05bc1f220004
RX 0000000900000009000000020000000000e269c2257195aa
RX 014dfc05bc1f220004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 2571c36f
RX 040e08014dfc00e01f2200
TX 0108004dfc05e01f220004
RX 00000009000000090000000200000000
RX 00e269c225738aa1
RX 01
RX 4dfc05e01f220004
RX 0000000b0000000b
RX 000000030000000000e269c22573c337
RX 040e08014dfc0000000000
Socket closed
+148
View File
@@ -0,0 +1,148 @@
# info queue
TX 010300011000
RX 0000000400000004000000020000000000e269c2663770fc
RX 01011000
RX 0000000f0000000f000000030000000000e269c26637a4a7
RX 040e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc057c30200004
RX 00000003000000030000000300000000
RX 00e269c266390c8a
RX 07f001
RX 00000009
RX 000000090000000200000000
RX 00e269c2663974da
RX 01
RX 4dfc057c30200004
RX 0000000b0000000b
RX 000000030000000000e269c26639ac63
RX 040e08014dfc0090652000
TX 0108004dfc059065200038
RX 000000090000000900000002
RX 0000000000e269c2
RX 663b4f1a
RX 014dfc059065200038
RX 0000003f0000003f0000000300000000
RX 00e269c2663b83d8
RX 040e3c014dfc00554555510000000001000000100000000000000010000000c8652000086620000466200004662000000000000000000044662000ecad2000
TX 0108004dfc054466200038
RX 000000090000000900000002
RX 0000000000e269c2663d419c
RX 014dfc054466200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 663d7aab
RX 040e3c014dfc005545555100000000020000001f000000000000001f0000007c66200074672000ac662000ac66200000000000000000007467200090652000
TX 0108004dfc057467200038
RX 0000000900000009000000020000000000e269c2
RX 663ebb9e
RX 014dfc057467200038
RX 0000003f0000003f00000003
RX 0000000000e269c2663eeac6
RX 040e3c014dfc00554555510000000001000000030000000000000003000000ac672000b8672000ac672000ac6720000000000000000000b867200044662000
TX 0108004dfc05b867200038
RX 0000000900000009000000020000000000e269c26640af70
RX 01
RX 4dfc05b867200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 6640e3ed
RX 040e3c014dfc005545555100000000010000001f000000000000001f000000f06720006c682000f0672000f067200000000000000000006c68200074672000
TX 0108004dfc056c68200038
RX 0000000900000009000000020000000000e269c26642a534
RX 014dfc056c68200038
RX 0000003f
RX 0000003f0000000300000000
RX 00e269c26642d8cd
RX 04
RX 0e3c014dfc00554555510000000001000000140000000000000014000000a4682000f4682000e0682000e06820000000000000000000f4682000b8672000
TX 0108004dfc05f468200038
RX 0000000900000009000000020000000000e269c266441bec
RX 014dfc05f468200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6644504f
RX 040e3c014dfc005545555100000000020000000800000000000000080000002c6920006c6920002c6920002c69200000000000000000006c6920006c682000
TX 0108004dfc056c69200038
RX 000000090000000900000002
RX 0000000000e269c2
RX 664611cc
RX 014dfc056c69200038
RX 0000003f
RX 0000003f0000000300000000
RX 00e269c266464b12
RX 04
RX 0e3c014dfc00554555510000000002000000060000000000000006000000a4692000d4692000a4692000a46920000000000000000000d4692000f4682000
TX 0108004dfc05d469200038
RX 00000009000000090000000200000000
RX 00e269c266478916
RX 01
RX 4dfc05d469200038
RX 0000003f0000003f00000003
RX 0000000000e269c26647be39
RX 040e3c014dfc00554555510000000002000000010000000000000001000000100d2000180d2000100d2000100d200000000000000000000c6a20006c692000
TX 0108004dfc050c6a200038
RX 000000090000000900000002
RX 0000000000e269c2664987ae
RX 014dfc050c6a200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 6649bc49
RX 040e3c014dfc00554555510000000002000000010000000000000001000000180d2000200d2000180d2000180d20000000000000000000446a2000d4692000
TX 0108004dfc05446a200038
RX 000000090000000900000002
RX 0000000000e269c2664af918
RX 014dfc05446a200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 664b2d9b
RX 040e3c014dfc005545555100000000020000002000000000000000200000007c6a20007c6b20007c6a20007c6a20000000000000000000903320000c6a2000
TX 0108004dfc059033200038
RX 0000000900000009000000020000000000e269c2664cf025
RX 014dfc059033200038
RX 0000003f0000003f
RX 000000030000000000e269c2
RX 664d236e
RX 040e3c014dfc005545555100000000020000000c000000000000000c0000009c732100fc732100ac732100ac7321000000000000000000705b2000446a2000
TX 0108004dfc05705b200038
RX 0000000900000009000000020000000000e269c2
RX 664ee493
RX 014dfc05705b200038
RX 0000003f0000003f0000000300000000
RX 00e269c2664f184e
RX 04
RX 0e3c014dfc00554555510000000001000000080000000000000008000000fc7321001c74210010742100107421000000000000000000c833200090332000
TX 0108004dfc05c833200038
RX 000000090000000900000002
RX 0000000000e269c2665059ac
RX 014dfc05c833200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6650912f
RX 040e3c014dfc005545555100000000020000001300000000000000130000001c742100b47421001c7421001c7421000000000000000000b4512000705b2000
TX 0108004dfc05b451200038
RX 0000000900000009
RX 000000020000000000e269c266525485
RX 014dfc05b451200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6652883b
RX 040e3c014dfc00554555510000000002000000060000000000000006000000b4742100e4742100b4742100b4742100000000000000000094ad2000c8332000
TX 0108004dfc0594ad200038
RX 000000090000000900000002
RX 0000000000e269c26653c77b
RX 014dfc0594ad200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6653fcfb
RX 040e3c014dfc00554555510000000001000000080000000000000008000000ccad2000ecad2000ccad2000ccad20000000000000000000ecad2000b4512000
TX 0108004dfc05ecad200038
RX 0000000900000009
RX 000000020000000000e269c2
RX 6655bd0f
RX 014dfc05ecad200038
RX 0000003f
RX 0000003f000000030000000000e269c2
RX 6655f6b7
RX 040e3c014dfc0055455551000000000100000010000000000000001000000024ae200064ae200024ae200024ae200000000000000000009065200094ad2000
Socket closed
@@ -0,0 +1,206 @@
#patch --address 0x5AED0 --hex 4ff00102
TX 010300011000
RX 0000000400000004000000020000000000e26a446e9f6b91
RX 01011000
RX 0000000f0000000f000000030000000000e26a446e9f8b6c
RX 040e0c01011000075301070f000961
TX 070200f001
RX 000000030000000300000003
RX 0000000000e26a446ea007c4
RX 07f001
RX 0000001d
RX 0000001d
RX 00000003
RX 00000000
RX 00e26a44
RX 6ea766be
RX 043e1a02010001acaf110809580e0201060aff4c0010050b1c52bc7ec2
RX 0000000f
RX 0000000f
RX 00000003
RX 00000000
RX 00e26a44
RX 6ea79c43
RX 04
RX 3e0c02010401acaf1108095800c2
RX 0000001a
RX 0000001a000000030000000000e26a44
RX 6ea7db11
RX 043e17020100002324008619000b02010607ff4c001002070cba
RX 0000000f0000000f000000030000000000e26a446ea8093a
RX 043e0c0201040023240086190000bb
RX 00000012
RX 00000012000000030000000000e26a446ea87cbe
RX 043e0f020100017c875a33f2750302011ab8
RX 0000000f0000000f000000030000000000e26a44
RX 6ea8a1e4
RX 04
RX 3e0c020104017c875a33f27500b8
RX 0000001d
RX 0000001d00000003
RX 00000000
RX 00e26a446eaa3a10
RX 043e1a02010001acaf110809580e0201060aff4c0010050b1c52bc7ec2
RX 0000000f
RX 0000000f0000000300000000
RX 00e26a446eaa7221
RX 04
RX 3e0c02010401acaf1108095800c2
RX 0000001a0000001a
RX 000000030000000000e26a44
RX 6eaa94c2
RX 043e17020100002324008619000b02010607ff4c001002070cba
RX 0000000f0000000f000000030000000000e26a44
RX 6eaab86c
RX 043e0c0201040023240086190000bb
RX 00000012
RX 0000001200000003
RX 0000000000e26a446eab46b1
RX 043e0f020100017c875a33f2750302011ab8
RX 0000000f
RX 0000000f000000030000000000e26a44
RX 6eab6faf
RX 043e0c020104017c875a33f27500b7
RX 0000001d
RX 0000001d0000000300000000
RX 00e26a446ead0dbe
RX 043e1a02010001acaf110809580e0201060aff4c0010050b1c52bc7ec2
RX 0000000f0000000f
RX 0000000300000000
RX 00e26a446ead30a5
RX 04
RX 3e0c02010401acaf1108095800c2
RX 00000012
RX 00000012
RX 00000003
RX 0000000000e26a446eae0487
RX 04
RX 3e0f020100017c875a33f2750302011ab8
RX 0000000f
RX 0000000f000000030000000000e26a446eae3298
RX 043e0c020104017c875a33f27500b8
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000054000000540000000200000000
RX 00e26a446ebc2719
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000007
RX 000000070000000300000000
RX 00e26a44
RX 6ebc39cd
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e26a446ebcff42
RX 014efc0400790d00
RX 0000000700000007000000030000000000e26a446ebd25e8
RX 040e04014efc00
RX 0000002700000027000000030000000000e26a446ebd3ea2
RX 04ff2452454144ffffffffffffffffffffffffffff0100000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414400003100
RX 00000054
RX 00000054
RX 00000002
RX 0000000000e26a44
RX 6ec0367e
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414400003100
RX 0000000700000007000000030000000000e26a446ec094dd
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e26a446ec1caf7
RX 014efc0400790d00
RX 0000000700000007000000030000000000e26a44
RX 6ec1e8dd
RX 040e04014efc00
RX 000000fb000000fb000000030000000000e26a446ec2140b
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 000000540000005400000002
RX 0000000000e26a446ec524c3
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000000700000007000000030000000000e26a446ec543b7
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e26a446ec6017d
RX 014efc0400790d00
RX 0000000700000007000000030000000000e26a446ec61fbd
RX 04
RX 0e04014efc00
RX 000000fb000000fb00000003
RX 0000000000e26a446ec63bef
RX 04fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f200200ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 000000540000005400000002
RX 0000000000e26a44
RX 6eca0d10
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 00000007
RX 00000007
RX 00000003
RX 00000000
RX 00e26a446eca3ee8
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 00000008000000080000000200000000
RX 00e26a446ecb387e
RX 01
RX 4efc0400790d00
RX 000000070000000700000003
RX 0000000000e26a446ecb551a
RX 040e04014efc00
RX 0000001f0000001f
RX 000000030000000000e26a44
RX 6ecb70ba
RX 04ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 000000090000000900000002
RX 0000000000e26a446ecc53d5
RX 014dfc0500000d00fb
RX 0000010200000102000000030000000000e26a44
RX 6ecc72f8
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 000000090000000900000002
RX 0000000000e26a446ecd6326
RX 01
RX 4dfc05fb000d00fb
RX 000001020000010200000003
RX 0000000000e26a446ecd83b4
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b91d375fa6ad93fbf8f7dbe7ff75fd9e5ca0efffd49103d13cffa73fe7e639fb677b5a1b4ec7f60a83ffddf1f965b7df72e3df
TX 0108004dfc05f6010d000a
RX 000000090000000900000002
RX 0000000000e26a446ece7736
RX 01
RX 4dfc05f6010d000a
RX 0000001100000011
RX 000000030000000000e26a44
RX 6ece9daa
RX 040e0e014dfc00fffe893f9c577ffbffa7
TX 010b004cfc08c4010d004ff00102
RX 0000000c0000000c00000002
RX 0000000000e26a446ed02579
RX 01
RX 4cfc08c4010d004ff00102
RX 000000070000000700000003
RX 0000000000e26a446ed048df
RX 040e04014cfc00
TX 010b004cfc08c4013100b46b0100
RX 0000000c0000000c00000002
RX 0000000000e26a446ed1b655
RX 014cfc08c4013100b46b0100
RX 0000000700000007
RX 000000030000000000e26a44
RX 6ed1dca1
RX 040e04014cfc00
TX 010b004cfc0810023100ffff0300
RX 0000000c0000000c0000000200000000
RX 00e26a446ed2da4f
RX 01
RX 4cfc0810023100ffff0300
RX 0000000700000007000000030000000000e26a446ed2f976
RX 040e04014cfc00
Socket closed
+135
View File
@@ -0,0 +1,135 @@
#patch --address 0x5AED0 --hex 4ff00102
TX 010300011000
RX 00000004
RX 00000004
RX 00000002
RX 00000000
RX 00e26a44
RX 2e577c0a
RX 01
RX 011000
RX 0000000f
RX 0000000f00000003
RX 00000000
RX 00e26a44
RX 2e57c4c3
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
RX 0000000300000003
RX 000000030000000000e26a44
RX 2e59dce2
RX 07f001
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 000000540000005400000002
RX 00000000
RX 00e26a44
RX 2e7e43b9
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000007
RX 00000007
RX 00000003
RX 00000000
RX 00e26a44
RX 2e7e8b54
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e26a442e7fb06f
RX 014efc0400790d00
RX 0000000700000007
RX 000000030000000000e26a442e7fe57a
RX 040e04014efc00
RX 00000027
RX 000000270000000300000000
RX 00e26a442e80009d
RX 04
RX ff2452454144ffffffffffffffffffffffffffff0300000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414400003100
RX 0000005400000054000000020000000000e26a442e843d37
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414400003100
RX 0000000700000007000000030000000000e26a44
RX 2e847bed
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e26a442e856102
RX 014efc0400790d00
RX 0000000700000007000000030000000000e26a44
RX 2e859682
RX 040e04014efc00
RX 000000fb000000fb
RX 000000030000000000e26a44
RX 2e85b1e8
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000005400000054000000020000000000e26a442e890f0f
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 00000007000000070000000300000000
RX 00e26a442e89441c
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e26a442e8aabd5
RX 01
RX 4efc0400790d00
RX 0000000700000007
RX 000000030000000000e26a44
RX 2e8adc3f
RX 040e04014efc00
RX 000000fb000000fb000000030000000000e26a442e8afa4a
RX 04fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f200200b46b0100ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 000000540000005400000002
RX 00000000
RX 00e26a44
RX 2e8e7744
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000000700000007000000030000000000e26a442e8ebd4b
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e26a44
RX 2e901a1b
RX 014efc0400790d00
RX 000000070000000700000003
RX 0000000000e26a442e9048cd
RX 040e04014efc00
RX 0000001f
RX 0000001f0000000300000000
RX 00e26a442e9068a7
RX 04
RX ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 0000000900000009000000020000000000e26a442e923fd6
RX 01
RX 4dfc0500000d00fb
RX 0000010200000102
RX 000000030000000000e26a442e926e92
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 00000009000000090000000200000000
RX 00e26a442e93d5f1
RX 014dfc05fb000d00fb
RX 0000010200000102000000030000000000e26a44
RX 2e940f37
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b94ff00102ad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 000000090000000900000002
RX 0000000000e26a44
RX 2e94eed7
RX 014dfc05f6010d000a
RX 00000011000000110000000300000000
RX 00e26a442e9523b0
RX 040e0e014dfc00fdfe893f9c4f77fbffa7
TX 010b004cfc08c4010d004ff00102
RX 0000000c0000000c00000002
RX 0000000000e26a442e971831
RX 014cfc08c4010d004ff00102
RX 0000000700000007000000030000000000e26a44
RX 2e975159
RX 040e04014cfc00
Socket closed
+193
View File
@@ -0,0 +1,193 @@
# readafh
TX 010300011000
RX 0000000400000004000000020000000000e269bf27019c6e
RX 01011000
RX 0000000f0000000f000000030000000000e269bf2701d7bc
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
TX 0108004dfc05e8382000fb
RX 000000030000000300000003
RX 0000000000e269bf27030d61
RX 07
RX f001
RX 0000000900000009
RX 000000020000000000e269bf27037d6d
RX 014dfc05e8382000fb
RX 0000010200000102
RX 0000000300000000
RX 00e269bf2703a9fa
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e339200051
RX 0000000900000009000000020000000000e269bf27060cf3
RX 01
RX 4dfc05e339200051
RX 0000005800000058
RX 000000030000000000e269bf
RX 27063d83
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05343a2000fb
RX 0000000900000009000000020000000000e269bf2707971e
RX 014dfc05343a2000fb
RX 00000102
RX 000001020000000300000000
RX 00e269bf2707cd21
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc052f3b200051
RX 0000000900000009000000020000000000e269bf2709ba9b
RX 014dfc052f3b200051
RX 00000058
RX 000000580000000300000000
RX 00e269bf2709eb09
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05803b2000fb
RX 000000090000000900000002
RX 0000000000e269bf270b5c34
RX 014dfc05803b2000fb
RX 00000102
RX 000001020000000300000000
RX 00e269bf270b97ec
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc057b3c200051
RX 000000090000000900000002
RX 0000000000e269bf270f09d7
RX 014dfc057b3c200051
RX 000000580000005800000003
RX 0000000000e269bf
RX 270f4da6
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05cc3c2000fb
RX 000000090000000900000002
RX 0000000000e269bf2710a04a
RX 01
RX 4dfc05cc3c2000fb
RX 00000102
RX 00000102000000030000000000e269bf
RX 2710d440
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05c73d200051
RX 000000090000000900000002
RX 0000000000e269bf2712b1f3
RX 014dfc05c73d200051
RX 00000058
RX 00000058000000030000000000e269bf
RX 2712ec08
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05183e2000fb
RX 000000090000000900000002
RX 0000000000e269bf27143dc2
RX 014dfc05183e2000fb
RX 00000102
RX 000001020000000300000000
RX 00e269bf2714796f
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05133f200051
RX 00000009000000090000000200000000
RX 00e269bf27166cb7
RX 01
RX 4dfc05133f200051
RX 0000005800000058
RX 000000030000000000e269bf
RX 2716a681
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05643f2000fb
RX 0000000900000009000000020000000000e269bf2717f36b
RX 014dfc05643f2000fb
RX 00000102
RX 000001020000000300000000
RX 00e269bf2718216f
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc055f40200051
RX 000000090000000900000002
RX 0000000000e269bf27198435
RX 014dfc055f40200051
RX 0000005800000058
RX 000000030000000000e269bf
RX 2719bc39
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05b0402000fb
RX 00000009000000090000000200000000
RX 00e269bf271a94b2
RX 01
RX 4dfc05b0402000fb
RX 000001020000010200000003
RX 0000000000e269bf271ac8fe
RX 04
RX 0eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05ab41200051
RX 000000090000000900000002
RX 0000000000e269bf271ba4e0
RX 014dfc05ab41200051
RX 00000058000000580000000300000000
RX 00e269bf271bda32
RX 04
RX 0e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05fc412000fb
RX 00000009000000090000000200000000
RX 00e269bf271db926
RX 01
RX 4dfc05fc412000fb
RX 000001020000010200000003
RX 0000000000e269bf271df2ab
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05f742200051
RX 00000009000000090000000200000000
RX 00e269bf271f50c1
RX 014dfc05f742200051
RX 000000580000005800000003
RX 0000000000e269bf271f8694
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc0548432000fb
RX 0000000900000009000000020000000000e269bf272164df
RX 01
RX 4dfc0548432000fb
RX 0000010200000102000000030000000000e269bf272198ad
RX 040eff014dfc000900000000000000000000000000000000000000000000000000777700c91000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000007d0000007d00000c001eff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002800000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000100000000000000f0ff0000000000000000000001c4000000000000
TX 0108004dfc054344200051
RX 0000000900000009000000020000000000e269bf2722ff40
RX 014dfc054344200051
RX 0000005800000058000000030000000000e269bf
RX 2723320b
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0105000614020c00
RX 0000000600000006000000020000000000e269bf27250acd
RX 010614020c00
RX 0000001400000014000000030000000000e269bf
RX 27253db8
RX 04
RX 0e11010614120c000000000001000000ffffff
TX 0108004dfc0594442000fb
RX 00000009000000090000000200000000
RX 00e269bf27271ab9
RX 014dfc0594442000fb
RX 0000010200000102000000030000000000e269bf
RX 2727546f
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc058f45200051
RX 000000090000000900000002
RX 0000000000e269bf2728af9d
RX 014dfc058f45200051
RX 00000058
RX 00000058000000030000000000e269bf
RX 2728eb27
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05e0452000fb
RX 000000090000000900000002
RX 0000000000e269bf272ac38c
RX 014dfc05e0452000fb
RX 0000010200000102
RX 000000030000000000e269bf272af7e3
RX 040eff014dfc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05db46200051
RX 0000000900000009000000020000000000e269bf
RX 272c558c
RX 01
RX 4dfc05db46200051
RX 0000005800000058000000030000000000e269bf
RX 272c911c
RX 040e55014dfc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Socket closed
+14
View File
@@ -0,0 +1,14 @@
# quit
TX 010300011000
RX 0000000400000004000000020000000000e269bf18a635e9
RX 01
RX 011000
RX 0000000f0000000f00000003
RX 00000000
RX 00e269bf
RX 18a675ea
RX 04
RX 0e0c01011000075301070f000961
TX 070200f001
RX 0000000300000003000000030000000000e269bf
Socket closed
+630
View File
@@ -0,0 +1,630 @@
# trace set 0x1000; trace show; trace del 0x1000
TX 010300011000
RX 0000000400000004000000020000000000e269c2509c84ef
RX 01011000
RX 0000000f0000000f000000030000000000e269c2509c940e
RX 040e0c01011000075301070f000961
TX 070200f001
RX 000000030000000300000003
RX 0000000000e269c2509d7055
RX 07
RX f001
TX 0108004dfc05007a0d00fb
RX 0000000900000009000000020000000000e269c2509e6a47
RX 014dfc05007a0d00fb
RX 000001020000010200000003
RX 0000000000e269c2509e923a
RX 040eff014dfc00f046eff300854ff0ff004ff04c0130f775f8044600f102002c49016000f1040045f64571018000f10200066000f104004ff038016944016000f10400056000f1040069464ff0380256f7f8fa204661f737ff204667f7efff384659f7a6fb85f3008800f002f8c646704770b54ff0ff004ff0fc0130f742f8044600f102001449016000f1040045f65f71018000f102004ff4001540f29e26204600f10800056000f1040029464ff0f40256f7c7fa204661f706ff4ff480500138fdd105f1f405013ee9d1204667f7b6ff70bd5452414352414d5f000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 0108004dfc05fb7a0d0005
RX 0000000900000009000000020000000000e269c2509fe2f2
RX 01
RX 4dfc05fb7a0d0005
RX 0000000c0000000c
RX 000000030000000000e269c2
RX 50a01821
RX 040e09014dfc000000000000
TX 01db004cfcd8007a0d00f046eff300854ff0ff004ff04c0130f775f8044600f102002c49016000f1040045f64571018000f10200066000f104004ff038016944016000f10400056000f1040069464ff0380256f7f8fa204661f737ff204667f7efff384659f7a6fb85f3008800f002f8c646704770b54ff0ff004ff0fc0130f742f8044600f102001449016000f1040045f65f71018000f102004ff4001540f29e26204600f10800056000f1040029464ff0f40256f7c7fa204661f706ff4ff480500138fdd105f1f405013ee9d1204667f7b6ff70bd5452414352414d5f
RX 000000dc000000dc000000020000000000e269c250a1e614
RX 014cfcd8007a0d00f046eff300854ff0ff004ff04c0130f775f8044600f102002c49016000f1040045f64571018000f10200066000f104004ff038016944016000f10400056000f1040069464ff0380256f7f8fa204661f737ff204667f7efff384659f7a6fb85f3008800f002f8c646704770b54ff0ff004ff0fc0130f742f8044600f102001449016000f1040045f65f71018000f102004ff4001540f29e26204600f10800056000f1040029464ff0f40256f7c7fa204661f706ff4ff480500138fdd105f1f405013ee9d1204667f7b6ff70bd5452414352414d5f
RX 00000007
RX 000000070000000300000000
RX 00e269c250a215c4
RX 04
RX 0e04014cfc00
TX 0108004dfc050010000004
RX 0000000900000009000000020000000000e269c250a356f7
RX 014dfc050010000004
RX 0000000b
RX 0000000b000000030000000000e269c2
RX 50a38c39
RX 040e08014dfc00b9774846
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 000000540000005400000002
RX 0000000000e269c250a619c1
RX 014cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000007
RX 00000007000000030000000000e269c2
RX 50a64e83
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e269c250a78ba3
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 50a7c6bb
RX 040e04014efc00
RX 000000270000002700000003
RX 0000000000e269c250a7e18a
RX 04ff2452454144ffffffffffffffffffffffffffff0100000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 0000005400000054000000020000000000e269c250aa4a69
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 0000000700000007
RX 000000030000000000e269c2
RX 50aa79f9
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250abbe81
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 50abf384
RX 040e04014efc00
RX 000000fb000000fb
RX 000000030000000000e269c2
RX 50ac0fff
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000005400000054000000020000000000e269c250ae8030
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000000700000007
RX 000000030000000000e269c250aeafa5
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250afb21a
RX 01
RX 4efc0400790d00
RX 000000070000000700000003
RX 0000000000e269c250afe17e
RX 040e04014efc00
RX 000000fb000000fb
RX 000000030000000000e269c2
RX 50affce9
RX 04fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f200200ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000005400000054000000020000000000e269c250b27141
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000000700000007
RX 000000030000000000e269c2
RX 50b2a0e7
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250b3e376
RX 014efc0400790d00
RX 0000000700000007
RX 000000030000000000e269c2
RX 50b4197d
RX 040e04014efc00
RX 0000001f
RX 0000001f0000000300000000
RX 00e269c250b4338f
RX 04
RX ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 000000090000000900000002
RX 0000000000e269c250b5e4d4
RX 014dfc0500000d00fb
RX 00000102
RX 00000102000000030000000000e269c2
RX 50b61902
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 000000090000000900000002
RX 0000000000e269c250b754a7
RX 014dfc05fb000d00fb
RX 0000010200000102
RX 000000030000000000e269c2
RX 50b788bc
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b9d6f07ebdad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 0000000900000009
RX 000000020000000000e269c2
RX 50b94e6e
RX 014dfc05f6010d000a
RX 00000011000000110000000300000000
RX 00e269c250b9828e
RX 04
RX 0e0e014dfc00fdfe893f9c4f77fbffa7
TX 010b004cfc08c4010d00b9774846
RX 0000000c0000000c000000020000000000e269c2
RX 50bb3ec0
RX 014cfc08c4010d00b9774846
RX 00000007000000070000000300000000
RX 00e269c250bb71ae
RX 04
RX 0e04014cfc00
TX 010b004cfc08c401310000040000
RX 0000000c0000000c000000020000000000e269c250bcb3d0
RX 01
RX 4cfc08c401310000040000
RX 00000007000000070000000300000000
RX 00e269c250bce097
RX 040e04014cfc00
TX 010b004cfc0810023100ffff0300
RX 0000000c0000000c000000020000000000e269c2
RX 50beb3cf
RX 014cfc0810023100ffff0300
RX 00000007
RX 000000070000000300000000
RX 00e269c250bf11cd
RX 04
RX 0e04014cfc00
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000054000000540000000200000000
RX 00e269c250c1fd51
RX 014cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 0000000700000007000000030000000000e269c250c204ac
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008
RX 000000020000000000e269c2
RX 50c2c8d6
RX 014efc0400790d00
RX 000000070000000700000003
RX 0000000000e269c250c2e00d
RX 040e04014efc00
RX 0000002700000027
RX 000000030000000000e269c2
RX 50c2ef1f
RX 04ff2452454144ffffffffffffffffffffffffffff0300000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 000000540000005400000002
RX 0000000000e269c250c5ef01
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 0000000700000007
RX 000000030000000000e269c250c62198
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e269c250c7dfa7
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c250c81390
RX 040e04014efc00
RX 000000fb000000fb000000030000000000e269c250c82b44
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 00000054
RX 00000054
RX 00000002
RX 0000000000e269c2
RX 50ca9432
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 00000007000000070000000300000000
RX 00e269c250cad401
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250cc1d34
RX 01
RX 4efc0400790d00
RX 00000007000000070000000300000000
RX 00e269c250cc4ad5
RX 040e04014efc00
RX 000000fb000000fb00000003
RX 0000000000e269c250cc6c31
RX 04fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f20020000040000ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000005400000054000000020000000000e269c250cf9a91
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 00000007000000070000000300000000
RX 00e269c250cfc8ca
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250d11163
RX 014efc0400790d00
RX 0000000700000007
RX 000000030000000000e269c250d145af
RX 040e04014efc00
RX 0000001f0000001f
RX 000000030000000000e269c2
RX 50d16083
RX 04ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 0000000900000009000000020000000000e269c250d30933
RX 01
RX 4dfc0500000d00fb
RX 0000010200000102
RX 000000030000000000e269c250d337d3
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 000000090000000900000002
RX 0000000000e269c250d50340
RX 01
RX 4dfc05fb000d00fb
RX 0000010200000102
RX 000000030000000000e269c250d535f9
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b9b9774846ad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 0000000900000009000000020000000000e269c250d66ddd
RX 014dfc05f6010d000a
RX 000000110000001100000003
RX 0000000000e269c250d69444
RX 04
RX 0e0e014dfc00fdfe893f9c4f77fbffa7
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 000000540000005400000002
RX 0000000000e269c250d9ee85
RX 014cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000007
RX 00000007000000030000000000e269c2
RX 50da21e2
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250db6355
RX 014efc0400790d00
RX 0000000700000007
RX 000000030000000000e269c250db9097
RX 040e04014efc00
RX 00000027
RX 000000270000000300000000
RX 00e269c250dbb062
RX 04
RX ff2452454144ffffffffffffffffffffffffffff0300000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 0000005400000054000000020000000000e269c250dedf1b
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 000000070000000700000003
RX 0000000000e269c250df0bfd
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250e0e259
RX 01
RX 4efc0400790d00
RX 0000000700000007
RX 000000030000000000e269c250e1107c
RX 040e04014efc00
RX 000000fb
RX 000000fb000000030000000000e269c2
RX 50e12bf8
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000005400000054
RX 000000020000000000e269c250e3a7d4
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 00000007
RX 00000007000000030000000000e269c250e3dbae
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e269c250e5214e
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 50e55bac
RX 040e04014efc00
RX 000000fb000000fb00000003
RX 0000000000e269c250e57572
RX 04
RX fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f20020000040000ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 000000540000005400000002
RX 0000000000e269c2
RX 50e7e0dd
RX 014cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 00000007
RX 000000070000000300000000
RX 00e269c250e81460
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 00000008
RX 00000008
RX 0000000200000000
RX 00e269c250e9d6da
RX 01
RX 4efc0400790d00
RX 0000000700000007000000030000000000e269c250ea7110
RX 040e04014efc00
RX 0000001f0000001f
RX 000000030000000000e269c250ea7474
RX 04ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 0000000900000009000000020000000000e269c250eb135b
RX 01
RX 4dfc0500000d00fb
RX 0000010200000102000000030000000000e269c2
RX 50eb1bfc
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 0000000900000009000000020000000000e269c250eb8e5f
RX 014dfc05fb000d00fb
RX 00000102000001020000000300000000
RX 00e269c250eb96f5
RX 04
RX 0eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b9b9774846ad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 0000000900000009000000020000000000e269c250ec086a
RX 014dfc05f6010d000a
RX 00000011
RX 000000110000000300000000
RX 00e269c250ec0fef
RX 04
RX 0e0e014dfc00fdfe893f9c4f77fbffa7
TX 010b004cfc0810023100ffff0100
RX 0000000c0000000c000000020000000000e269c250ec3308
RX 014cfc0810023100ffff0100
RX 0000000700000007
RX 0000000300000000
RX 00e269c250ec3a90
RX 040e04014cfc00
TX 010b004cfc08c4013100ffff0300
RX 0000000c0000000c000000020000000000e269c250ec6d32
RX 014cfc08c4013100ffff0300
RX 00000007
RX 0000000700000003
RX 0000000000e269c250ec7499
RX 04
RX 0e04014cfc00
TX 011f004cfc1c007b0d002de9ff5f4ff480564ff07107fff778ffbde8ff5f29f774ba
RX 00000020000000200000000200000000
RX 00e269c250ed9c26
RX 01
RX 4cfc1c007b0d002de9ff5f4ff480564ff07107fff778ffbde8ff5f29f774ba
RX 00000007000000070000000300000000
RX 00e269c250edb815
RX 04
RX 0e04014cfc00
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000054000000540000000200000000
RX 00e269c250f0c34c
RX 01
RX 4cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 0000000700000007
RX 000000030000000000e269c250f0ff45
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250f1f9f6
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 50f22a03
RX 040e04014efc00
RX 000000270000002700000003
RX 0000000000e269c250f244ee
RX 04ff2452454144ffffffffffffffffffffffffffff0100000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 000000540000005400000002
RX 0000000000e269c250f4c41f
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 00000007
RX 000000070000000300000000
RX 00e269c250f4f7dc
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250f6348c
RX 014efc0400790d00
RX 00000007
RX 000000070000000300000000
RX 00e269c250f66264
RX 04
RX 0e04014efc00
RX 000000fb000000fb
RX 000000030000000000e269c2
RX 50f688ce
RX 04fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000005400000054
RX 000000020000000000e269c2
RX 50f8f267
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 00000007
RX 00000007000000030000000000e269c2
RX 50f9269c
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c2
RX 50fa61db
RX 014efc0400790d00
RX 000000070000000700000003
RX 0000000000e269c250fa9197
RX 040e04014efc00
RX 000000fb
RX 000000fb0000000300000000
RX 00e269c250fab5d9
RX 04
RX fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f200200ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000005400000054000000020000000000e269c250fd1dc8
RX 014cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 00000007
RX 00000007000000030000000000e269c250fd4c68
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c250fe8e63
RX 014efc0400790d00
RX 00000007
RX 000000070000000300000000
RX 00e269c250fec31d
RX 040e04014efc00
RX 0000001f0000001f00000003
RX 0000000000e269c250fede91
RX 04ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 0000000900000009000000020000000000e269c251008231
RX 01
RX 4dfc0500000d00fb
RX 0000010200000102
RX 000000030000000000e269c2
RX 5100b5bb
RX 040eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 0000000900000009
RX 000000020000000000e269c2
RX 5101f974
RX 014dfc05fb000d00fb
RX 000001020000010200000003
RX 0000000000e269c251023444
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b9b9774846ad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 0000000900000009
RX 000000020000000000e269c2
RX 5103f1f6
RX 014dfc05f6010d000a
RX 00000011000000110000000300000000
RX 00e269c2510425b5
RX 040e0e014dfc00fdfe893f9c4f77fbffa7
TX 010b004cfc08c4010d00d6f07ebd
RX 0000000c0000000c000000020000000000e269c2
RX 5105e3d3
RX 014cfc08c4010d00d6f07ebd
RX 00000007
RX 000000070000000300000000
RX 00e269c2510615c3
RX 040e04014cfc00
TX 010b004cfc08c401310000040000
RX 0000000c0000000c
RX 000000020000000000e269c2
RX 510759c7
RX 014cfc08c401310000040000
RX 00000007
RX 000000070000000300000000
RX 00e269c251079392
RX 04
RX 0e04014cfc00
TX 010b004cfc0810023100ffff0300
RX 0000000c0000000c
RX 000000020000000000e269c2
RX 5109508c
RX 014cfc0810023100ffff0300
RX 00000007000000070000000300000000
RX 00e269c251098994
RX 04
RX 0e04014cfc00
TX 0153004cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 0000005400000054
RX 000000020000000000e269c2
RX 510c0e79
RX 014cfc5000790d0010b54ff0ff004ff0200101f1060130f7f5f8044600f102000a49016000f1040009494ff008020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd5245414404023100
RX 00000007000000070000000300000000
RX 00e269c2510c5eab
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 00000008000000080000000200000000
RX 00e269c2510d2c28
RX 01
RX 4efc0400790d00
RX 000000070000000700000003
RX 0000000000e269c2510d60fd
RX 040e04014efc00
RX 00000027
RX 00000027000000030000000000e269c2
RX 510d7afc
RX 04ff2452454144ffffffffffffffffffffffffffff0300000000000000000000000000ff3f0000
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 0000005400000054000000020000000000e269c2510fe3dc
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000b49016000f104004ff444114ff03d020b68036000f1040001f10401013af7d1204661f7c1ff204668f779f810bd000052454144
RX 00000007
RX 000000070000000300000000
RX 00e269c25110132c
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008
RX 000000020000000000e269c2
RX 51115828
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 5111923a
RX 040e04014efc00
RX 000000fb000000fb0000000300000000
RX 00e269c25111abb6
RX 04
RX fff8524541445908000053910000246c0000986a0000e82801003a2601003b410000f6410000ee33000048340000b70e010092fa00000bfa0000dbf400007cf1000088f800008a080100890601004d070100dd050100bab3010029b6010016b701000bb70100d6ab00008a1d0000ac820100868201007b5f0100f6010100d9fe00007f02010014370100f43501005b640100d3fc0000341e0100bc1e0100d30c0100960d0100bb0b0100c40b0100c90d0100bfcd0000efcd0000a0d80000f529000083d4000090250100ce300000487d0000417e0000d49001008c1e0000b4680000fb64000048510100935201007d4f0100d55101000b500100
TX 0153004cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 0000005400000054
RX 000000020000000000e269c2
RX 511418e5
RX 014cfc5000790d0010b54ff0ff004ff0f40101f1060130f7f5f8044600f102000a49016000f1040009494ff03d020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144f4003100
RX 000000070000000700000003
RX 0000000000e269c251144c8b
RX 040e04014cfc00
TX 0107004efc0400790d00
RX 0000000800000008000000020000000000e269c2
RX 51158b08
RX 014efc0400790d00
RX 00000007000000070000000300000000
RX 00e269c25115baa1
RX 04
RX 0e04014efc00
RX 000000fb000000fb
RX 000000030000000000e269c2
RX 5115def0
RX 04fff852454144354d010080520100964e0100be4d0100c29c0000899d0000775a0000bdd00000b1600000a56000003f610000a55d00000860000023600000296000003d6000001662000027620000d0b200009d62000026b40000ade50100a3a5000024a6000059a5000039a50000fea400003c550100915401009ba1000076a30000bda20000bd990100ea990100da9600004997000074970000e655010036e800007c9e00009d9f0000d6b40000d86f000032b300004822020025210200e82102000525020034250200692402004d2002002f20020000040000ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0153004cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 0000005400000054
RX 000000020000000000e269c2
RX 51185199
RX 014cfc5000790d0010b54ff0ff004ff0180101f1060130f7f5f8044600f102000a49016000f1040009494ff006020b68036000f1040001f10401013af7d1204661f7c2ff204668f77af810bd52454144e8013100
RX 00000007000000070000000300000000
RX 00e269c2511885a5
RX 04
RX 0e04014cfc00
TX 0107004efc0400790d00
RX 000000080000000800000002
RX 0000000000e269c25119c109
RX 014efc0400790d00
RX 00000007
RX 00000007000000030000000000e269c2
RX 5119f50d
RX 040e04014efc00
RX 0000001f
RX 0000001f0000000300000000
RX 00e269c2511a1474
RX 04ff1c52454144ffff0300ffff0300ffff0300ffff0300ffff0300ffff0300
TX 0108004dfc0500000d00fb
RX 0000000900000009000000020000000000e269c2
RX 511bbcd6
RX 014dfc0500000d00fb
RX 00000102
RX 000001020000000300000000
RX 00e269c2511beb30
RX 04
RX 0eff014dfc0020f25ebafef17ab9b5f0b6b8b5f0d5bbd8f127bf87f0f6bac0f05abdc0f0cebb16f2c8bb15f28eb88cf0a2bbe3f1febbe3f110bde6f1e4bce7f100bce4f124b88ef006b88ff086bb8ef08cba8ff097bd63f0b6b964f030bb64f0feb962f018bba7f082b9c8f01ebe6ff0eabb71f06ebd78f052ba8ff064bd90f0aabb91f0d4bf82f038bb85f015bc77f0bab893f0c0be88f00ebd88f007bc8cf0e2bf8cf060be90f0aeb98df008ba8cf000be9ff0d8bd9ff0b2bd9af056b8012340229bf098b889f012bfc4f00eb8b0f01ebfb0f038bd6cf018b8c8f0aabcb6f062b8b6f0dcbf7bf048bfd0f176b97cf0e4ba7bf039be7cf0d1b97cf084bfd0f17c
TX 0108004dfc05fb000d00fb
RX 0000000900000009000000020000000000e269c2511d2ee6
RX 01
RX 4dfc05fb000d00fb
RX 0000010200000102
RX 000000030000000000e269c2511d62db
RX 040eff014dfc00bc7cf0c9bcd1f154beacf040beacf0c8bcb9f00cbd9cf086b8bcf0b9bab8f0c4b8b7f094bfb8f0d1beb8f019babcf098bdb8f0dab9b8f0b5b9bcf0a3bab7f0e5bda3f096bcbcf0d2b9f5f1ecb8acf167b8f8f1f4bdf8f1f6bcf8f190befcf142bcf8f14abf7ff0a6bc7bf01eb9a7f016bfa7f066bba7f0dcbc69f0e0be69f091be01f227b8aaf0dcbbaaf08dbb7af0aebe96f012baa8f08ebda8f05abba3f0fab8b9f067b9a3f046bc99f1babc99f108bf99f18abd98f156bf98f1febe99f198b89af1e0b89af126b9d6f07ebdad03fbf8f75befff757d9edca0efffd49113553cffa73fe7e639fb677b4a1b4ec7f64a83ffdd71f925b7df72f3cf
TX 0108004dfc05f6010d000a
RX 0000000900000009000000020000000000e269c2511f2ab5
RX 014dfc05f6010d000a
RX 000000110000001100000003
RX 0000000000e269c2511f5327
RX 040e0e014dfc00fdfe893f9c4f77fbffa7
TX 010b004cfc0810023100ffff0100
RX 0000000c0000000c
RX 000000020000000000e269c251211f2a
RX 014cfc0810023100ffff0100
RX 00000007
RX 00000007000000030000000000e269c2
RX 51215380
RX 040e04014cfc00
TX 010b004cfc08c4013100ffff0300
RX 0000000c0000000c000000020000000000e269c251228f77
RX 014cfc08c4013100ffff0300
RX 00000007
RX 000000070000000300000000
RX 00e269c25122bcec
RX 040e04014cfc00
Socket closed
@@ -0,0 +1,310 @@
# info heap
TX 01011000
RX 040e0c010110000900100931010e42
TX 07f001
EX '[Errno 22] Invalid argument'
TX 014dfc057c0c200004
RX 040e08014dfc009c0c2000
TX 014dfc059c0c200030
RX 040e34014dfc00bc0c200020002000106e2100706e21001c02dff600000000000000001800ac67dc0c2000600032001072210010722100
TX 014dfc05106e210004
RX 040e08014dfc0000000000
TX 014dfc05346e210004
RX 040e08014dfc003f700000
TX 014dfc05586e210004
RX 040e08014dfc000e060112
TX 014dfc057c6e210004
RX 040e08014dfc00fc000e06
TX 014dfc05a06e210004
RX 040e08014dfc0000000000
TX 014dfc05c46e210004
RX 040e08014dfc000e425bf2
TX 014dfc05e86e210004
RX 040e08014dfc0050e4f62a
TX 014dfc050c6f210004
RX 040e08014dfc0037ff97bb
TX 014dfc05306f210004
RX 040e08014dfc00506f2100
TX 014dfc05546f210004
RX 040e08014dfc00b549d45c
TX 014dfc05786f210004
RX 040e08014dfc0058f0be2b
TX 014dfc059c6f210004
RX 040e08014dfc00a0903c96
TX 014dfc05c06f210004
RX 040e08014dfc00e2c5ca58
TX 014dfc05e46f210004
RX 040e08014dfc00ce7076b6
TX 014dfc050870210004
RX 040e08014dfc00bb595b16
TX 014dfc052c70210004
RX 040e08014dfc00169268ea
TX 014dfc055070210004
RX 040e08014dfc0070702100
TX 014dfc057470210004
RX 040e08014dfc0027ac3478
TX 014dfc059870210004
RX 040e08014dfc00a4f59995
TX 014dfc05bc70210004
RX 040e08014dfc005f841056
TX 014dfc05e070210004
RX 040e08014dfc00d87169c0
TX 014dfc050471210004
RX 040e08014dfc007a987779
TX 014dfc052871210004
RX 040e08014dfc00b66dc568
TX 014dfc054c71210004
RX 040e08014dfc0019511209
TX 014dfc057071210004
RX 040e08014dfc0090712100
TX 014dfc059471210004
RX 040e08014dfc00f34fbf0f
TX 014dfc05b871210004
RX 040e08014dfc0013e150a9
TX 014dfc05dc71210004
RX 040e08014dfc008248b026
TX 014dfc050072210004
RX 040e08014dfc00f604397f
TX 014dfc052472210004
RX 040e08014dfc002000106e
TX 014dfc054872210004
RX 040e08014dfc0021001072
TX 014dfc056c72210004
RX 040e08014dfc00e515f282
TX 014dfc05bc0c200030
RX 040e34014dfc00dc0c20006000320010722100107221003202924d000000000000000031000dc5ac1921000c010c00d0842100d0842100
TX 014dfc051072210004
RX 040e08014dfc0070722100
TX 014dfc057472210004
RX 040e08014dfc00959a9ec8
TX 014dfc05d872210004
RX 040e08014dfc0030a9ed59
TX 014dfc053c73210004
RX 040e08014dfc003bbab2b5
TX 014dfc05a073210004
RX 040e08014dfc0086fd5a51
TX 014dfc050474210004
RX 040e08014dfc00d50c8a3b
TX 014dfc056874210004
RX 040e08014dfc0004638b3f
TX 014dfc05cc74210004
RX 040e08014dfc0030ac8deb
TX 014dfc053075210004
RX 040e08014dfc0005dee8ca
TX 014dfc059475210004
RX 040e08014dfc00383cb12b
TX 014dfc05f875210004
RX 040e08014dfc00712477a2
TX 014dfc055c76210004
RX 040e08014dfc00042f27e2
TX 014dfc05c076210004
RX 040e08014dfc0060e84efd
TX 014dfc052477210004
RX 040e08014dfc00c4ea8546
TX 014dfc058877210004
RX 040e08014dfc006568c849
TX 014dfc05ec77210004
RX 040e08014dfc0020f8d1c2
TX 014dfc055078210004
RX 040e08014dfc0006c1b1bd
TX 014dfc05b478210004
RX 040e08014dfc00094d843c
TX 014dfc051879210004
RX 040e08014dfc008e76a50c
TX 014dfc057c79210004
RX 040e08014dfc00eab79187
TX 014dfc05e079210004
RX 040e08014dfc00c244eb84
TX 014dfc05447a210004
RX 040e08014dfc00096bb2fa
TX 014dfc05a87a210004
RX 040e08014dfc0095ba6e8e
TX 014dfc050c7b210004
RX 040e08014dfc00c93437cf
TX 014dfc05707b210004
RX 040e08014dfc00d07b2100
TX 014dfc05d47b210004
RX 040e08014dfc00aa7e35ec
TX 014dfc05387c210004
RX 040e08014dfc001427f85b
TX 014dfc059c7c210004
RX 040e08014dfc0043ec3098
TX 014dfc05007d210004
RX 040e08014dfc002b962090
TX 014dfc05647d210004
RX 040e08014dfc00e1e50a13
TX 014dfc05c87d210004
RX 040e08014dfc00890b643f
TX 014dfc052c7e210004
RX 040e08014dfc008f1285f5
TX 014dfc05907e210004
RX 040e08014dfc00992f618e
TX 014dfc05f47e210004
RX 040e08014dfc00a224eb13
TX 014dfc05587f210004
RX 040e08014dfc001617b045
TX 014dfc05bc7f210004
RX 040e08014dfc00c343e48e
TX 014dfc052080210004
RX 040e08014dfc0059330458
TX 014dfc058480210004
RX 040e08014dfc006f72bcfd
TX 014dfc05e880210004
RX 040e08014dfc00b41d6c1a
TX 014dfc054c81210004
RX 040e08014dfc00c8c49d5e
TX 014dfc05b081210004
RX 040e08014dfc000a3b3001
TX 014dfc051482210004
RX 040e08014dfc00d81de738
TX 014dfc057882210004
RX 040e08014dfc00f687b753
TX 014dfc05dc82210004
RX 040e08014dfc00d1c2a441
TX 014dfc054083210004
RX 040e08014dfc001d6a3d74
TX 014dfc05a483210004
RX 040e08014dfc00eb59e393
TX 014dfc050884210004
RX 040e08014dfc002bac49b0
TX 014dfc056c84210004
RX 040e08014dfc00531c7cdb
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc053485210004
RX 040e08014dfc0000000000
TX 014dfc05dc0c200030
RX 040e34014dfc00ac1921000c010c00d0842100d08421000b01c7f400000000000000000a009ddee562af6e7340e80466ef0ffb070ae8b4
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc05e085210004
RX 040e08014dfc007066626f
TX 014dfc05f086210004
RX 040e08014dfc0080d97cfe
TX 014dfc050088210004
RX 040e08014dfc00cc25c8a4
TX 014dfc051089210004
RX 040e08014dfc0014cf1027
TX 014dfc05208a210004
RX 040e08014dfc009b023589
TX 014dfc05308b210004
RX 040e08014dfc003f2478b0
TX 014dfc05408c210004
RX 040e08014dfc00789c4ff0
TX 014dfc05508d210004
RX 040e08014dfc001653cd1c
TX 014dfc05608e210004
RX 040e08014dfc000bf3677b
TX 014dfc05708f210004
RX 040e08014dfc00127f44bb
TX 014dfc058090210004
RX 040e08014dfc006abc559f
TX 014dfc05ac19210030
RX 040e34014dfc00cc1921002c040400609121006091210004000000000000000000000004000000ec1921004404100010a2210010a22100
TX 014dfc056091210004
RX 040e08014dfc008c952100
TX 014dfc059095210004
RX 040e08014dfc001939e2d2
TX 014dfc05c099210004
RX 040e08014dfc0093582076
TX 014dfc05f09d210004
RX 040e08014dfc00604ad39e
TX 014dfc05cc19210030
RX 040e34014dfc00ec1921004404100010a2210010a22100100000000000000000000000100000000c1a210008010f0050e6210050e62100
TX 014dfc0510a2210004
RX 040e08014dfc0054a62100
TX 014dfc0558a6210004
RX 040e08014dfc0052cdef92
TX 014dfc05a0aa210004
RX 040e08014dfc0017c2abb7
TX 014dfc05e8ae210004
RX 040e08014dfc000596b2ce
TX 014dfc0530b3210004
RX 040e08014dfc005ad23383
TX 014dfc0578b7210004
RX 040e08014dfc000b251dde
TX 014dfc05c0bb210004
RX 040e08014dfc009aa77767
TX 014dfc0508c0210004
RX 040e08014dfc005e949cc9
TX 014dfc0550c4210004
RX 040e08014dfc00e819e1ac
TX 014dfc0598c8210004
RX 040e08014dfc00a348e7b5
TX 014dfc05e0cc210004
RX 040e08014dfc009f139f97
TX 014dfc0528d1210004
RX 040e08014dfc00fed3ec24
TX 014dfc0570d5210004
RX 040e08014dfc0088440ccb
TX 014dfc05b8d9210004
RX 040e08014dfc008bed1d44
TX 014dfc0500de210004
RX 040e08014dfc00cf7e0977
TX 014dfc0548e2210004
RX 040e08014dfc00769b88ce
TX 014dfc05ec19210030
RX 040e34014dfc000c1a210008010f0050e6210050e621000f00000000000000000000000f0000000000000008010f00c8f52100c8f52100
TX 014dfc0550e6210004
RX 040e08014dfc0058e72100
TX 014dfc055ce7210004
RX 040e08014dfc00af56f59e
TX 014dfc0568e8210004
RX 040e08014dfc00e76f973a
TX 014dfc0574e9210004
RX 040e08014dfc00dee5cb64
TX 014dfc0580ea210004
RX 040e08014dfc00e4ed9cf9
TX 014dfc058ceb210004
RX 040e08014dfc0007ee18ae
TX 014dfc0598ec210004
RX 040e08014dfc00c490cf87
TX 014dfc05a4ed210004
RX 040e08014dfc000c8f0f7f
TX 014dfc05b0ee210004
RX 040e08014dfc00f5414004
TX 014dfc05bcef210004
RX 040e08014dfc00db7f4b5a
TX 014dfc05c8f0210004
RX 040e08014dfc007dda224f
TX 014dfc05d4f1210004
RX 040e08014dfc00c1bf8fbf
TX 014dfc05e0f2210004
RX 040e08014dfc001b97e5ff
TX 014dfc05ecf3210004
RX 040e08014dfc00c868fa27
TX 014dfc05f8f4210004
RX 040e08014dfc0013b920ef
TX 014dfc050c1a210030
RX 040e34014dfc000000000008010f00c8f52100c8f521000f00000000000000000000000f00000000000000000000000000000000000000
TX 014dfc05c8f5210004
RX 040e08014dfc00d0f62100
TX 014dfc05d4f6210004
RX 040e08014dfc00bcb62189
TX 014dfc05e0f7210004
RX 040e08014dfc0075612293
TX 014dfc05ecf8210004
RX 040e08014dfc00e99a2e01
TX 014dfc05f8f9210004
RX 040e08014dfc002b2c920c
TX 014dfc0504fb210004
RX 040e08014dfc009d6ffeb2
TX 014dfc0510fc210004
RX 040e08014dfc009e978b78
TX 014dfc051cfd210004
RX 040e08014dfc000a9dde86
TX 014dfc0528fe210004
RX 040e08014dfc002b8f97a2
TX 014dfc0534ff210004
RX 040e08014dfc00c03cc4bc
TX 014dfc054000220004
RX 040e08014dfc0001e7a7e0
TX 014dfc054c01220004
RX 040e08014dfc0046622e6e
TX 014dfc055802220004
RX 040e08014dfc00aa83d071
TX 014dfc056403220004
RX 040e08014dfc00acf9b776
TX 014dfc057004220004
RX 040e08014dfc008978fab6
Socket closed
+8
View File
@@ -0,0 +1,8 @@
# sendhcicmd 0x1001
TX 01011000
RX 040e0c010110000900000931010842
TX 07f001
EX '[Errno 22] Invalid argument'
TX 01011000
RX 040e0c010110000900000931010842
Socket closed
+8
View File
@@ -0,0 +1,8 @@
# sendhcicmd 0x1337
TX 01011000
RX 040e0c010110000900000931010842
TX 07f001
EX '[Errno 22] Invalid argument'
TX 01371300
RX 040e0401371301
Socket closed
+10
View File
@@ -0,0 +1,10 @@
# hexdump 0
TX 01011000
RX 040e0c010110000900000931010842
TX 07f001
EX '[Errno 22] Invalid argument'
TX 014dfc0500000000fb
RX 040eff014dfc0000042000bd0300006d010000a1010000a7010000ad010000b301000000000000000000000000000000000000f50d00007301000000000000f50d000000000000ff0000000300000003000000030300000300000003000000030000000300000003000000030000000300000003000000030000000300000080808080808080004502000053020000610200006f0200007d020000b9010000b10200000000000000000000d3020000000000000000000000000000e50200000000000000000000f3020000010300000f0300001d0300000000000000000000000000000000000000000000000000000000000000000000000000002b030000000000
TX 014dfc05fb00000005
RX 040e09014dfc000000000000
Socket closed
@@ -0,0 +1,310 @@
# info heap
TX 01011000
RX 040e0c010110000900100931010e42
TX 07f001
EX '[Errno 22] Invalid argument'
TX 014dfc057c0c200004
RX 040e08014dfc009c0c2000
TX 014dfc059c0c200030
RX 040e34014dfc00bc0c200020002000106e2100706e21001c02dff600000000000000001800ac67dc0c2000600032001072210010722100
TX 014dfc05106e210004
RX 040e08014dfc0000000000
TX 014dfc05346e210004
RX 040e08014dfc003f700000
TX 014dfc05586e210004
RX 040e08014dfc000e060112
TX 014dfc057c6e210004
RX 040e08014dfc00fc000e06
TX 014dfc05a06e210004
RX 040e08014dfc0000000000
TX 014dfc05c46e210004
RX 040e08014dfc000e425bf2
TX 014dfc05e86e210004
RX 040e08014dfc0050e4f62a
TX 014dfc050c6f210004
RX 040e08014dfc0037ff97bb
TX 014dfc05306f210004
RX 040e08014dfc00506f2100
TX 014dfc05546f210004
RX 040e08014dfc00b549d45c
TX 014dfc05786f210004
RX 040e08014dfc0058f0be2b
TX 014dfc059c6f210004
RX 040e08014dfc00a0903c96
TX 014dfc05c06f210004
RX 040e08014dfc00e2c5ca58
TX 014dfc05e46f210004
RX 040e08014dfc00ce7076b6
TX 014dfc050870210004
RX 040e08014dfc00bb595b16
TX 014dfc052c70210004
RX 040e08014dfc00169268ea
TX 014dfc055070210004
RX 040e08014dfc0070702100
TX 014dfc057470210004
RX 040e08014dfc0027ac3478
TX 014dfc059870210004
RX 040e08014dfc00a4f59995
TX 014dfc05bc70210004
RX 040e08014dfc005f841056
TX 014dfc05e070210004
RX 040e08014dfc00d87169c0
TX 014dfc050471210004
RX 040e08014dfc007a987779
TX 014dfc052871210004
RX 040e08014dfc00b66dc568
TX 014dfc054c71210004
RX 040e08014dfc0019511209
TX 014dfc057071210004
RX 040e08014dfc0090712100
TX 014dfc059471210004
RX 040e08014dfc00f34fbf0f
TX 014dfc05b871210004
RX 040e08014dfc0013e150a9
TX 014dfc05dc71210004
RX 040e08014dfc008248b026
TX 014dfc050072210004
RX 040e08014dfc00f604397f
TX 014dfc052472210004
RX 040e08014dfc002000106e
TX 014dfc054872210004
RX 040e08014dfc0021001072
TX 014dfc056c72210004
RX 040e08014dfc00e515f282
TX 014dfc05bc0c200030
RX 040e34014dfc00dc0c20006000320010722100107221003202924d000000000000000031000dc5ac1921000c010c00d0842100d0842100
TX 014dfc051072210004
RX 040e08014dfc0070722100
TX 014dfc057472210004
RX 040e08014dfc00959a9ec8
TX 014dfc05d872210004
RX 040e08014dfc0030a9ed59
TX 014dfc053c73210004
RX 040e08014dfc003bbab2b5
TX 014dfc05a073210004
RX 040e08014dfc0086fd5a51
TX 014dfc050474210004
RX 040e08014dfc00d50c8a3b
TX 014dfc056874210004
RX 040e08014dfc0004638b3f
TX 014dfc05cc74210004
RX 040e08014dfc0030ac8deb
TX 014dfc053075210004
RX 040e08014dfc0005dee8ca
TX 014dfc059475210004
RX 040e08014dfc00383cb12b
TX 014dfc05f875210004
RX 040e08014dfc00712477a2
TX 014dfc055c76210004
RX 040e08014dfc00042f27e2
TX 014dfc05c076210004
RX 040e08014dfc0060e84efd
TX 014dfc052477210004
RX 040e08014dfc00c4ea8546
TX 014dfc058877210004
RX 040e08014dfc006568c849
TX 014dfc05ec77210004
RX 040e08014dfc0020f8d1c2
TX 014dfc055078210004
RX 040e08014dfc0006c1b1bd
TX 014dfc05b478210004
RX 040e08014dfc00094d843c
TX 014dfc051879210004
RX 040e08014dfc008e76a50c
TX 014dfc057c79210004
RX 040e08014dfc00eab79187
TX 014dfc05e079210004
RX 040e08014dfc00c244eb84
TX 014dfc05447a210004
RX 040e08014dfc00096bb2fa
TX 014dfc05a87a210004
RX 040e08014dfc0095ba6e8e
TX 014dfc050c7b210004
RX 040e08014dfc00c93437cf
TX 014dfc05707b210004
RX 040e08014dfc00d07b2100
TX 014dfc05d47b210004
RX 040e08014dfc00aa7e35ec
TX 014dfc05387c210004
RX 040e08014dfc001427f85b
TX 014dfc059c7c210004
RX 040e08014dfc0043ec3098
TX 014dfc05007d210004
RX 040e08014dfc002b962090
TX 014dfc05647d210004
RX 040e08014dfc00e1e50a13
TX 014dfc05c87d210004
RX 040e08014dfc00890b643f
TX 014dfc052c7e210004
RX 040e08014dfc008f1285f5
TX 014dfc05907e210004
RX 040e08014dfc00992f618e
TX 014dfc05f47e210004
RX 040e08014dfc00a224eb13
TX 014dfc05587f210004
RX 040e08014dfc001617b045
TX 014dfc05bc7f210004
RX 040e08014dfc00c343e48e
TX 014dfc052080210004
RX 040e08014dfc0059330458
TX 014dfc058480210004
RX 040e08014dfc006f72bcfd
TX 014dfc05e880210004
RX 040e08014dfc00b41d6c1a
TX 014dfc054c81210004
RX 040e08014dfc00c8c49d5e
TX 014dfc05b081210004
RX 040e08014dfc000a3b3001
TX 014dfc051482210004
RX 040e08014dfc00d81de738
TX 014dfc057882210004
RX 040e08014dfc00f687b753
TX 014dfc05dc82210004
RX 040e08014dfc00d1c2a441
TX 014dfc054083210004
RX 040e08014dfc001d6a3d74
TX 014dfc05a483210004
RX 040e08014dfc00eb59e393
TX 014dfc050884210004
RX 040e08014dfc002bac49b0
TX 014dfc056c84210004
RX 040e08014dfc00531c7cdb
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc053485210004
RX 040e08014dfc0000000000
TX 014dfc05dc0c200030
RX 040e34014dfc00ac1921000c010c00d0842100d08421000b01c7f400000000000000000a009ddee562af6e7340e80466ef0ffb070ae8b4
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc05e085210004
RX 040e08014dfc007066626f
TX 014dfc05f086210004
RX 040e08014dfc0080d97cfe
TX 014dfc050088210004
RX 040e08014dfc00cc25c8a4
TX 014dfc051089210004
RX 040e08014dfc0014cf1027
TX 014dfc05208a210004
RX 040e08014dfc009b023589
TX 014dfc05308b210004
RX 040e08014dfc003f2478b0
TX 014dfc05408c210004
RX 040e08014dfc00789c4ff0
TX 014dfc05508d210004
RX 040e08014dfc001653cd1c
TX 014dfc05608e210004
RX 040e08014dfc000bf3677b
TX 014dfc05708f210004
RX 040e08014dfc00127f44bb
TX 014dfc058090210004
RX 040e08014dfc006abc559f
TX 014dfc05ac19210030
RX 040e34014dfc00cc1921002c040400609121006091210004000000000000000000000004000000ec1921004404100010a2210010a22100
TX 014dfc056091210004
RX 040e08014dfc008c952100
TX 014dfc059095210004
RX 040e08014dfc001939e2d2
TX 014dfc05c099210004
RX 040e08014dfc0093582076
TX 014dfc05f09d210004
RX 040e08014dfc00604ad39e
TX 014dfc05cc19210030
RX 040e34014dfc00ec1921004404100010a2210010a22100100000000000000000000000100000000c1a210008010f0050e6210050e62100
TX 014dfc0510a2210004
RX 040e08014dfc0054a62100
TX 014dfc0558a6210004
RX 040e08014dfc0052cdef92
TX 014dfc05a0aa210004
RX 040e08014dfc0017c2abb7
TX 014dfc05e8ae210004
RX 040e08014dfc000596b2ce
TX 014dfc0530b3210004
RX 040e08014dfc005ad23383
TX 014dfc0578b7210004
RX 040e08014dfc000b251dde
TX 014dfc05c0bb210004
RX 040e08014dfc009aa77767
TX 014dfc0508c0210004
RX 040e08014dfc005e949cc9
TX 014dfc0550c4210004
RX 040e08014dfc00e819e1ac
TX 014dfc0598c8210004
RX 040e08014dfc00a348e7b5
TX 014dfc05e0cc210004
RX 040e08014dfc009f139f97
TX 014dfc0528d1210004
RX 040e08014dfc00fed3ec24
TX 014dfc0570d5210004
RX 040e08014dfc0088440ccb
TX 014dfc05b8d9210004
RX 040e08014dfc008bed1d44
TX 014dfc0500de210004
RX 040e08014dfc00cf7e0977
TX 014dfc0548e2210004
RX 040e08014dfc00769b88ce
TX 014dfc05ec19210030
RX 040e34014dfc000c1a210008010f0050e6210050e621000f00000000000000000000000f0000000000000008010f00c8f52100c8f52100
TX 014dfc0550e6210004
RX 040e08014dfc0058e72100
TX 014dfc055ce7210004
RX 040e08014dfc00af56f59e
TX 014dfc0568e8210004
RX 040e08014dfc00e76f973a
TX 014dfc0574e9210004
RX 040e08014dfc00dee5cb64
TX 014dfc0580ea210004
RX 040e08014dfc00e4ed9cf9
TX 014dfc058ceb210004
RX 040e08014dfc0007ee18ae
TX 014dfc0598ec210004
RX 040e08014dfc00c490cf87
TX 014dfc05a4ed210004
RX 040e08014dfc000c8f0f7f
TX 014dfc05b0ee210004
RX 040e08014dfc00f5414004
TX 014dfc05bcef210004
RX 040e08014dfc00db7f4b5a
TX 014dfc05c8f0210004
RX 040e08014dfc007dda224f
TX 014dfc05d4f1210004
RX 040e08014dfc00c1bf8fbf
TX 014dfc05e0f2210004
RX 040e08014dfc001b97e5ff
TX 014dfc05ecf3210004
RX 040e08014dfc00c868fa27
TX 014dfc05f8f4210004
RX 040e08014dfc0013b920ef
TX 014dfc050c1a210030
RX 040e34014dfc000000000008010f00c8f52100c8f521000f00000000000000000000000f00000000000000000000000000000000000000
TX 014dfc05c8f5210004
RX 040e08014dfc00d0f62100
TX 014dfc05d4f6210004
RX 040e08014dfc00bcb62189
TX 014dfc05e0f7210004
RX 040e08014dfc0075612293
TX 014dfc05ecf8210004
RX 040e08014dfc00e99a2e01
TX 014dfc05f8f9210004
RX 040e08014dfc002b2c920c
TX 014dfc0504fb210004
RX 040e08014dfc009d6ffeb2
TX 014dfc0510fc210004
RX 040e08014dfc009e978b78
TX 014dfc051cfd210004
RX 040e08014dfc000a9dde86
TX 014dfc0528fe210004
RX 040e08014dfc002b8f97a2
TX 014dfc0534ff210004
RX 040e08014dfc00c03cc4bc
TX 014dfc054000220004
RX 040e08014dfc0001e7a7e0
TX 014dfc054c01220004
RX 040e08014dfc0046622e6e
TX 014dfc055802220004
RX 040e08014dfc00aa83d071
TX 014dfc056403220004
RX 040e08014dfc00acf9b776
TX 014dfc057004220004
RX 040e08014dfc008978fab6
Socket closed
@@ -0,0 +1,310 @@
# info heap
TX 01011000
RX 040e0c010110000900100931010e42
TX 07f001
EX '[Errno 22] Invalid argument'
TX 014dfc057c0c200004
RX 040e08014dfc009c0c2000
TX 014dfc059c0c200030
RX 040e34014dfc00bc0c200020002000106e2100b06e21001c02dff600000000000000001800ac67dc0c2000600032001072210010722100
TX 014dfc05106e210004
RX 040e08014dfc0000000000
TX 014dfc05346e210004
RX 040e08014dfc003f700000
TX 014dfc05586e210004
RX 040e08014dfc000e060112
TX 014dfc057c6e210004
RX 040e08014dfc007c6e2100
TX 014dfc05a06e210004
RX 040e08014dfc0000000000
TX 014dfc05c46e210004
RX 040e08014dfc000e425bf2
TX 014dfc05e86e210004
RX 040e08014dfc0050e4f62a
TX 014dfc050c6f210004
RX 040e08014dfc0037ff97bb
TX 014dfc05306f210004
RX 040e08014dfc00506f2100
TX 014dfc05546f210004
RX 040e08014dfc00b549d45c
TX 014dfc05786f210004
RX 040e08014dfc0058f0be2b
TX 014dfc059c6f210004
RX 040e08014dfc00a0903c96
TX 014dfc05c06f210004
RX 040e08014dfc00e2c5ca58
TX 014dfc05e46f210004
RX 040e08014dfc00ce7076b6
TX 014dfc050870210004
RX 040e08014dfc00bb595b16
TX 014dfc052c70210004
RX 040e08014dfc00169268ea
TX 014dfc055070210004
RX 040e08014dfc0070702100
TX 014dfc057470210004
RX 040e08014dfc0027ac3478
TX 014dfc059870210004
RX 040e08014dfc00a4f59995
TX 014dfc05bc70210004
RX 040e08014dfc005f841056
TX 014dfc05e070210004
RX 040e08014dfc00d87169c0
TX 014dfc050471210004
RX 040e08014dfc007a987779
TX 014dfc052871210004
RX 040e08014dfc00b66dc568
TX 014dfc054c71210004
RX 040e08014dfc0019511209
TX 014dfc057071210004
RX 040e08014dfc0090712100
TX 014dfc059471210004
RX 040e08014dfc00f34fbf0f
TX 014dfc05b871210004
RX 040e08014dfc0013e150a9
TX 014dfc05dc71210004
RX 040e08014dfc008248b026
TX 014dfc050072210004
RX 040e08014dfc00f604397f
TX 014dfc052472210004
RX 040e08014dfc002000106e
TX 014dfc054872210004
RX 040e08014dfc0021001072
TX 014dfc056c72210004
RX 040e08014dfc00e515f282
TX 014dfc05bc0c200030
RX 040e34014dfc00dc0c20006000320010722100107221003202924d000000000000000031000dc5ac1921000c010c00d0842100d0842100
TX 014dfc051072210004
RX 040e08014dfc0070722100
TX 014dfc057472210004
RX 040e08014dfc00959a9ec8
TX 014dfc05d872210004
RX 040e08014dfc0030a9ed59
TX 014dfc053c73210004
RX 040e08014dfc003bbab2b5
TX 014dfc05a073210004
RX 040e08014dfc0086fd5a51
TX 014dfc050474210004
RX 040e08014dfc00d50c8a3b
TX 014dfc056874210004
RX 040e08014dfc0004638b3f
TX 014dfc05cc74210004
RX 040e08014dfc0030ac8deb
TX 014dfc053075210004
RX 040e08014dfc0005dee8ca
TX 014dfc059475210004
RX 040e08014dfc00383cb12b
TX 014dfc05f875210004
RX 040e08014dfc00712477a2
TX 014dfc055c76210004
RX 040e08014dfc00042f27e2
TX 014dfc05c076210004
RX 040e08014dfc0060e84efd
TX 014dfc052477210004
RX 040e08014dfc00c4ea8546
TX 014dfc058877210004
RX 040e08014dfc006568c849
TX 014dfc05ec77210004
RX 040e08014dfc0020f8d1c2
TX 014dfc055078210004
RX 040e08014dfc0006c1b1bd
TX 014dfc05b478210004
RX 040e08014dfc00094d843c
TX 014dfc051879210004
RX 040e08014dfc008e76a50c
TX 014dfc057c79210004
RX 040e08014dfc00eab79187
TX 014dfc05e079210004
RX 040e08014dfc00c244eb84
TX 014dfc05447a210004
RX 040e08014dfc00096bb2fa
TX 014dfc05a87a210004
RX 040e08014dfc0095ba6e8e
TX 014dfc050c7b210004
RX 040e08014dfc00c93437cf
TX 014dfc05707b210004
RX 040e08014dfc00d07b2100
TX 014dfc05d47b210004
RX 040e08014dfc00aa7e35ec
TX 014dfc05387c210004
RX 040e08014dfc001427f85b
TX 014dfc059c7c210004
RX 040e08014dfc0043ec3098
TX 014dfc05007d210004
RX 040e08014dfc002b962090
TX 014dfc05647d210004
RX 040e08014dfc00e1e50a13
TX 014dfc05c87d210004
RX 040e08014dfc00890b643f
TX 014dfc052c7e210004
RX 040e08014dfc008f1285f5
TX 014dfc05907e210004
RX 040e08014dfc00992f618e
TX 014dfc05f47e210004
RX 040e08014dfc00a224eb13
TX 014dfc05587f210004
RX 040e08014dfc001617b045
TX 014dfc05bc7f210004
RX 040e08014dfc00c343e48e
TX 014dfc052080210004
RX 040e08014dfc0059330458
TX 014dfc058480210004
RX 040e08014dfc006f72bcfd
TX 014dfc05e880210004
RX 040e08014dfc00b41d6c1a
TX 014dfc054c81210004
RX 040e08014dfc00c8c49d5e
TX 014dfc05b081210004
RX 040e08014dfc000a3b3001
TX 014dfc051482210004
RX 040e08014dfc00d81de738
TX 014dfc057882210004
RX 040e08014dfc00f687b753
TX 014dfc05dc82210004
RX 040e08014dfc00d1c2a441
TX 014dfc054083210004
RX 040e08014dfc001d6a3d74
TX 014dfc05a483210004
RX 040e08014dfc00eb59e393
TX 014dfc050884210004
RX 040e08014dfc002bac49b0
TX 014dfc056c84210004
RX 040e08014dfc00531c7cdb
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc053485210004
RX 040e08014dfc0000000000
TX 014dfc05dc0c200030
RX 040e34014dfc00ac1921000c010c00d0842100d08421000b01c7f400000000000000000a009ddee562af6e7340e80466ef0ffb070ae8b4
TX 014dfc05d084210004
RX 040e08014dfc00e8862100
TX 014dfc05e085210004
RX 040e08014dfc007066626f
TX 014dfc05f086210004
RX 040e08014dfc0080d97cfe
TX 014dfc050088210004
RX 040e08014dfc00cc25c8a4
TX 014dfc051089210004
RX 040e08014dfc0014cf1027
TX 014dfc05208a210004
RX 040e08014dfc009b023589
TX 014dfc05308b210004
RX 040e08014dfc003f2478b0
TX 014dfc05408c210004
RX 040e08014dfc00789c4ff0
TX 014dfc05508d210004
RX 040e08014dfc001653cd1c
TX 014dfc05608e210004
RX 040e08014dfc000bf3677b
TX 014dfc05708f210004
RX 040e08014dfc00127f44bb
TX 014dfc058090210004
RX 040e08014dfc006abc559f
TX 014dfc05ac19210030
RX 040e34014dfc00cc1921002c040400609121006091210004000000000000000000000004000000ec1921004404100010a2210010a22100
TX 014dfc056091210004
RX 040e08014dfc008c952100
TX 014dfc059095210004
RX 040e08014dfc001939e2d2
TX 014dfc05c099210004
RX 040e08014dfc0093582076
TX 014dfc05f09d210004
RX 040e08014dfc00604ad39e
TX 014dfc05cc19210030
RX 040e34014dfc00ec1921004404100010a2210010a22100100000000000000000000000100000000c1a210008010f0050e6210050e62100
TX 014dfc0510a2210004
RX 040e08014dfc0054a62100
TX 014dfc0558a6210004
RX 040e08014dfc0052cdef92
TX 014dfc05a0aa210004
RX 040e08014dfc0017c2abb7
TX 014dfc05e8ae210004
RX 040e08014dfc000596b2ce
TX 014dfc0530b3210004
RX 040e08014dfc005ad23383
TX 014dfc0578b7210004
RX 040e08014dfc000b251dde
TX 014dfc05c0bb210004
RX 040e08014dfc009aa77767
TX 014dfc0508c0210004
RX 040e08014dfc005e949cc9
TX 014dfc0550c4210004
RX 040e08014dfc00e819e1ac
TX 014dfc0598c8210004
RX 040e08014dfc00a348e7b5
TX 014dfc05e0cc210004
RX 040e08014dfc009f139f97
TX 014dfc0528d1210004
RX 040e08014dfc00fed3ec24
TX 014dfc0570d5210004
RX 040e08014dfc0088440ccb
TX 014dfc05b8d9210004
RX 040e08014dfc008bed1d44
TX 014dfc0500de210004
RX 040e08014dfc00cf7e0977
TX 014dfc0548e2210004
RX 040e08014dfc00769b88ce
TX 014dfc05ec19210030
RX 040e34014dfc000c1a210008010f0050e6210050e621000f00000000000000000000000f0000000000000008010f00c8f52100c8f52100
TX 014dfc0550e6210004
RX 040e08014dfc0058e72100
TX 014dfc055ce7210004
RX 040e08014dfc00af56f59e
TX 014dfc0568e8210004
RX 040e08014dfc00e76f973a
TX 014dfc0574e9210004
RX 040e08014dfc00dee5cb64
TX 014dfc0580ea210004
RX 040e08014dfc00e4ed9cf9
TX 014dfc058ceb210004
RX 040e08014dfc0007ee18ae
TX 014dfc0598ec210004
RX 040e08014dfc00c490cf87
TX 014dfc05a4ed210004
RX 040e08014dfc000c8f0f7f
TX 014dfc05b0ee210004
RX 040e08014dfc00f5414004
TX 014dfc05bcef210004
RX 040e08014dfc00db7f4b5a
TX 014dfc05c8f0210004
RX 040e08014dfc007dda224f
TX 014dfc05d4f1210004
RX 040e08014dfc00c1bf8fbf
TX 014dfc05e0f2210004
RX 040e08014dfc001b97e5ff
TX 014dfc05ecf3210004
RX 040e08014dfc00c868fa27
TX 014dfc05f8f4210004
RX 040e08014dfc0013b920ef
TX 014dfc050c1a210030
RX 040e34014dfc000000000008010f00c8f52100c8f521000f00000000000000000000000f00000000000000000000000000000000000000
TX 014dfc05c8f5210004
RX 040e08014dfc00d0f62100
TX 014dfc05d4f6210004
RX 040e08014dfc00bcb62189
TX 014dfc05e0f7210004
RX 040e08014dfc0075612293
TX 014dfc05ecf8210004
RX 040e08014dfc00e99a2e01
TX 014dfc05f8f9210004
RX 040e08014dfc002b2c920c
TX 014dfc0504fb210004
RX 040e08014dfc009d6ffeb2
TX 014dfc0510fc210004
RX 040e08014dfc009e978b78
TX 014dfc051cfd210004
RX 040e08014dfc000a9dde86
TX 014dfc0528fe210004
RX 040e08014dfc002b8f97a2
TX 014dfc0534ff210004
RX 040e08014dfc00c03cc4bc
TX 014dfc054000220004
RX 040e08014dfc0001e7a7e0
TX 014dfc054c01220004
RX 040e08014dfc0046622e6e
TX 014dfc055802220004
RX 040e08014dfc00aa83d071
TX 014dfc056403220004
RX 040e08014dfc00acf9b776
TX 014dfc057004220004
RX 040e08014dfc008978fab6
Socket closed
+24
View File
@@ -0,0 +1,24 @@
#info patchram
TX 01011000
RX 040e0c010110000900000931010842
TX 07f001
EX '[Errno 22] Invalid argument'
TX 014dfc050404310030
RX 040e34014dfc00ffffff010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX 014dfc0500003100fb
RX 040eff014dfc0064940000573f01009c2b0000cf300000535c00006a5c00009c2a0000005c000071fe00002c280400c67001006b530000f01101007e8402006f7d0100e37702009e2f0100a8380200a7b50100ee6a0200f7620000ee650000229302006594000066940000ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff07
TX 014dfc05fb003100fb
RX 040eff014dfc0000ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff
TX 014dfc05f6013100fb
RX 040eff014dfc000700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ffff0700ff
TX 014dfc05f10231000f
RX 040e13014dfc00ff0700ffff0700ffff0700ffff0700
TX 014dfc0500002700fb
RX 040eff014dfc00f08100bf20f250bb65f2d4ba64f272b859f26eb959f244b965f2eebc59f22eba30f254bd66f1e0b914f2d9bd5cf2c6b82bf25ebecff10abf10f26cbfd3f158b924f218bbe2f10cb902f21cbfd5f196bc57f286bc56f2a5beccf172bbdff800f0b51c2100b3d49afb3038947bf67ebf341331b728594b17bf4c068a7ed89290321050ba52fbdfe08a89508492a5a48eeb9e952548a46ffd17bf864edaf1d4be9ed118c63ffdb7ff0a60c273d1cbf72d05ef4729e6b9f7b7eb0707933aab8d2f73e00188543cbd83a3f1392c6a779fd1ae61df09051b9d4cd1232cdafdea2be6b4c30f949a8e3c85ec332ee1c17ff5bccdb4382d47bdfc938d9148df
TX 014dfc05fb002700fb
RX 040eff014dfc00843c586fe60530bad846816f0a916a8ea65c83248b318ef55a8dcfab4001b92f176b60c89755f4c44b10e03bf589043f3ecc9289db57e15a7b192edb142f37d3e4df805ade71654f8e9f483c46c0f8430a3815de4009db93229b0b78be12abad3cbfa51a7012e5492bb93b862cc1ba5279aac17a73ca61208c16705bd24109dd4f8d7da7e3882408ea986dbc01ba2444127345c820e717df36b7a5918bcb9c5af23b2329ec1bb08c2fc8120f4c9c9729a40cec2bb9f50bdbaf1f67b461341ffbce0739724c9e0f9eb8d3b49c4bc6bfac721617171de3e1ef4ec09cb4bbaad793469b82b6e035a66d3b14d187c0a53857345a09bf1bbf6c5063a982
TX 014dfc05f6012700fb
RX 040eff014dfc0010e7424805c69acb88d54810e4f42b3e145780d1c69e770b1c1f2e6a19798f8d0bba6f63d3ef79e9995f1c8d9542767a35642328640341f332db9f478f5f41b9cdb32b5e6c631aabaa7f60f6b38af1595ba63bd8b4af848e921197ea547bdd137291fd9d6ab0ee8d9e9d71d977ff476fd37c9ca14da57456ce978865de723d75127b028a985f23cef4c10c3433163e98727fa7a59631d4412d8bce5cda604d1ee007503dca29c69064212873e7648d9e178d994e324281e416c4f6c9ceaf1c632d8929e61acd177efa34134df6f0d289caf355512317bae54e4d6b8749e3fd83f1139942632d29f75d20e4f6c4c6d69b8ece1675d774fb3dba7fd8
TX 014dfc05f10227000f
RX 040e13014dfc003c5709aa875fa9d597aad08d14a480
Socket closed
View File
+8
View File
@@ -0,0 +1,8 @@
# sendhcicmd 0x1001
TX 0103011000
RX 040e0d01011000066724060f009641
TX 0103011000
RX 040e0d01011000066724060f009641
TX
RX
Socket closed
+8
View File
@@ -0,0 +1,8 @@
# sendhcicmd 0x1337
TX 0103011000
RX 040e0d01011000066724060f009641
TX 0103371300
RX 040e8030137130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TX
RX
Socket closed
+10
View File
@@ -0,0 +1,10 @@
# hexdump 0
TX 0103011000
RX 040e0d01011000066724060f009641
TX 01084dfc0500000000fb
RX 040eff014dfc00060000ea5cf09fe55cf09fe55cf09fe55cf09fe55cf09fe55cf09fe55cf09fe52c809fe5002098e534809fe5080052e10100001a1c809fe508f0a0e11c809fe5002098e518809fe5080052e11500000afeffffeac80000fca80000fc000000fcc8000000436f70790000080004000800080008000c0008001000080014000800180008000000000000000000000000000000000000000000000000000000000000000000000000000cd09fe5470000eb0000a0e100d09fe500f09fe500e408005c01000071500300436f70797269676874202863292042726f6164636f6d20436f72702e20323030342042434d323034352028722920426c756574
TX 01084dfc05fb00000005
RX 040e09014dfc006f6f746820
TX
RX
Socket closed
+8
View File
@@ -0,0 +1,8 @@
# readafh
TX 0103011000
RX 040e0d0101100006b415060f000e22
TX 01050614020c00
RX 040e110106140c0087dc0400010000004cd90800
TX
RX
Socket closed
+6
View File
@@ -0,0 +1,6 @@
# quit
TX 0103011000
RX 040e0d0101100006b415060f000e22
TX
RX
Socket closed
+68
View File
@@ -0,0 +1,68 @@
from builtins import object
import argparse
from internalblue.cli import internalblue_cli, _parse_argv
import os
try:
from typing import List, Optional, Any, TYPE_CHECKING, Tuple
except ImportError:
pass
tracedir = os.path.dirname(__file__)
class Fakeargs(object):
def __init__(self):
self.data_directory = None
self.verbose = False
self.trace = None
self.save = None
self.replay = None
self.device = ""
self.ios_device = False
self.testdevice = False
def _device_to_core():
pass
core_to_device = {
'hcicore': 'hci_replay',
'macoscore': 'macos_replay',
'adbcore': 'adb_replay'
}
def get_trace_path_cmd_tuple(core, tracefile):
# type: (str, str) -> Tuple[str, Optional[str]]
tracepath = os.path.join(tracedir, core, tracefile)
with open(tracepath) as f:
cmd = f.readline()
if cmd.startswith("#"):
return tracepath, cmd[1:]
else:
return tracepath, None
def trace_test(core, tracepath, commands):
args = _parse_argv("")
args.device = core_to_device[core]
args.replay = tracepath
args.commands = commands + "; quit"
internalblue_cli("", args=args)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--core")
parser.add_argument("--trace")
parser.add_argument("--commands")
args = parser.parse_args()
tracepath, commands = get_trace_path_cmd_tuple(args.core, args.trace)
trace_test(args.core, tracepath, commands)