diff --git a/Gemfile.lock b/Gemfile.lock index 2da55ca..ab640af 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -218,4 +218,4 @@ DEPENDENCIES jekyll-paginate BUNDLED WITH - 1.16.1 + 2.0.1 diff --git a/_config.yml b/_config.yml index 35ba08d..b27dfb8 100644 --- a/_config.yml +++ b/_config.yml @@ -26,8 +26,6 @@ navbar-links: Home: index Downloads: download/ Documentation: http://scapy.readthedocs.io/ - Demo: demo/ - Build your own tools: build-your-own-tools/ # Image to show in the navigation bar - image must be a square (width = height) # Remove this parameter if you don't want an image in the navbar diff --git a/build-your-own-tools.md b/build-your-own-tools.md deleted file mode 100644 index 90b1d1e..0000000 --- a/build-your-own-tools.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Build you own tools with Scapy -subtitle: Use Scapy to build your own tools -date: 2019 ---- - -You can use [Scapy](index.html) to make your own automated tools. You can also extend Scapy without having to edit its source file. - -If you have built some interesting tools, please contribute back to the mailing-list! - -Extending Scapy ---------------- - -If you need to add some new protocols, new functions, anything, you can write it directly into Scapy source file. But this is not very conveniant. Even if those modifications are to be integrated into Scapy, it can be more conveniant to write them in a separate file. - -Once you've done that, you can launch Scapy and import your file, but this is still not very conveniant. Another way to do that is to make your file executable and have it call the Scapy function named interact(). - -```python -#! /usr/bin/env python - -# Set log level to benefit from Scapy warnings import logging -logging.getLogger("scapy").setLevel(1) - -from scapy.all import * - -class Test(Packet): - name = "Test packet" - fields_desc = [ ShortField("test1", 1), - ShortField("test2", 2) ] -def make_test(x,y): - return Ether()/IP()/Test(test1=x,test2=y) - -if __name__ == "__main__": - interact(mydict=globals(), mybanner="Test add-on v3.14") -``` - -If you put the above listing in the test_interact.py file and make it executable, you'll get : - -```python -# ./test_interact.py -Welcome to Scapy (2.4.0) -Test add-on v3.14 ->>> make_test(42,666) ->> -``` - -Using Scapy in your tools -------------------------- - -You can easily use Scapy in your own tools. Just import what you need and do it. - -This first example take an IP or a name as first parameter, send an ICMP echo request packet and display the completely dissected return packet. - -```python -#! /usr/bin/env python -import sys -from scapy.all import sr1,IP,ICMP - -p=sr1(IP(dst=sys.argv[1])/ICMP()) -if p: - p.show() -``` - -This is a more complex example which does an ARP ping and reports what it found with LaTeX formating. - -```python -#! /usr/bin/env python # arping2tex : arpings a network and outputs a LaTeX table as a result -import sys -if len(sys.argv) != 2: - print "Usage: arping2tex n eg: arping2tex 192.168.1.0/24" - sys.exit(1) - -from scapy.all import srp,Ether,ARP,conf -conf.verb=0 - -ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=sys.argv[1]), timeout=2) - -print(r"begin{tabular}{|l|l|}") -print(r"hline") -print(r"MAC & IP") -print(r"hline") -for snd,rcv in ans: - print(rcv.sprintf(r"%Ether.src% & %ARP.psrc%")) - print(r"hline") -print(r"end{tabular}") -``` - -Here is another tool that will constantly monitor all interfaces on a machine and print all ARP request it sees, even on 802.11 frames from a Wi-Fi card in monitor mode. Note the store=0 parameter to sniff() to avoid storing all packets in memory for nothing. - -```python -#! /usr/bin/env python -from scapy.all import * - -def arp_monitor_callback(pkt): - if ARP in pkt and pkt[ARP].op in (1,2): #who-has or is-at - return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%") - -sniff(prn=arp_monitor_callback, filter="arp", store=0) -``` - -For a real life example, you can check [Wifitap](http://sid.rstack.org/index.php/Wifitap_EN) diff --git a/demo.md b/demo.md deleted file mode 100644 index 0f5bb5c..0000000 --- a/demo.md +++ /dev/null @@ -1,817 +0,0 @@ ---- -title: Scapy quick demo -subtitle: Quick demo - an interactive session -date: 2019 ---- - -### Please also have a look at the [interactive tutorial](https://scapy.readthedocs.io/en/latest/usage.html#interactive-tutorial) in the official documentation, that may be more up to date. - -If you are new to python and you really don't understand a word because of that, or if you want to learn this language, take an hour to read the very good tutorial from Guido Van Rossum here: [http://docs.python.org/tutorial/](http://docs.python.org/tutorial/). After that, you'll know python :) (really!). For a more in-depth tutorial [Dive Into Python](http://www.diveintopython.net/toc/index.html) is a very good start too. - -Scapy uses the python interpreter as a command board. That means that you can use directly python language (assign variables, use loops, define functions, etc.) - -The idea is simple. Scapy mainly does two things : sending packets and receiving answers. You define a set of packets, it sends them, receives answers, matches requests with answers and returns a list of packet couples (request, answer) and a list of unmatched packets. This has the big advantage over tools like nmap or hping that an answer is not reduced to (open/closed/filtered), but is the whole packet. - -On top of this can be build more high level functions, for example one that does traceroutes and give as a result only the start TTL of the request and the source IP of the answer. One that pings a whole network and gives the list of machines answering. One that does a portscan and returns a LaTeX report. - -First, we play a bit and create 4 IP packets at once. Let's see how it works. We first instantiate the IP class. Then, we instantiate it again and we provide a destination that is worth 4 IP addresses (/30 gives the netmask). Using a Python idiom, we develop this implicit packet in a set of explicit packets. - -```python -# ./run_scapy -Welcome to Scapy (2.4.0) ->>> IP() - ->>> target="www.target.com" ->>> target="www.target.com/30" ->>> ip=IP(dst=target) ->>> ip |> ->>> [p for p in ip] -[, , , ] -``` - -The configuration is hold into a variable named conf, which is saved in the session. - -```python ->>> conf -Version= 2.4.0 -BTsocket = -IPCountry_base = 'GeoIPCountry4Scapy.gz' -L2listen = -L2socket = -L3socket = -checkIPID = 1 -checkIPaddr = 1 -checkIPsrc = 1 -color_theme = -countryLoc_base = 'countryLoc.csv' -debug_dissector = 0 -debug_match = 0 -except_filter = '' -gnuplot_world = 'world.dat' -histfile = '/home/pbi/.scapy_history' -iface = 'eth1' -nmap_base = '/usr/share/nmap/nmap-os-fingerprints' -p0f_base = '/etc/p0f.fp' -padding= 1 -promisc= 1 -prompt = '>>> ' -queso_base = '/etc/queso.conf' -route = -Network Netmask Gateway Iface Output IP -127.0.0.0 255.0.0.0 0.0.0.0 lo 127.0.0.1 -192.168.5.0 255.255.255.0 0.0.0.0 eth1192.168.5.21 -0.0.0.0 0.0.0.0 192.168.5.1 eth1192.168.5.21 -session= 'mysession' -session_tracking = {} -sniff_promisc = 1 -stealth= 'not implemented' -verb = 2 -warning_threshold = 5 -wepkey = '' ->>> conf.verb=1 ->>> conf.color_theme=RastaTheme() -``` - -Now, let's manipulate some packets. Here you can see layers that are supported for the moment. It's really easy to add one. - -```python ->>> ls() -ARP: ARP -BOOTP : BOOTP -CookedLinux : cooked linux -DHCP : DHCP options -DNS: DNS -DNSQR : DNS Question Record -DNSRR : DNS Resource Record -Dot11 : 802.11 -Dot11ATIM : 802.11 ATIM -Dot11AssoReq : 802.11 Association Request -Dot11AssoResp : 802.11 Association Response -Dot11Auth : 802.11 Authentication -Dot11Beacon : 802.11 Beacon -Dot11Deauth : 802.11 Deauthentication -Dot11Disas : 802.11 Disassociation -Dot11Elt : 802.11 Information Element -Dot11ProbeReq : 802.11 Probe Request -Dot11ProbeResp : 802.11 Probe Response -Dot11ReassoReq : 802.11 Reassociation Request -Dot11ReassoResp : 802.11 Reassociation Response -Dot11WEP : 802.11 WEP packet -Dot1Q : 802.1Q -Dot3 : 802.3 -EAP: EAP -EAPOL : EAPOL -Ether : Ethernet -GPRS : GPRSdummy -HSRP : HSRP -ICMP : ICMP -ICMPerror : ICMP in ICMP -IP : IP -IPerror: IP in ICMP -ISAKMP : ISAKMP -ISAKMP_class : abstract packet -ISAKMP_payload : ISAKMP payload -ISAKMP_payload_Hash : ISAKMP Hash -ISAKMP_payload_ID : ISAKMP Identification -ISAKMP_payload_KE : ISAKMP Key Exchange -ISAKMP_payload_Nonce : ISAKMP Nonce -ISAKMP_payload_Proposal : IKE proposal -ISAKMP_payload_SA : ISAKMP SA -ISAKMP_payload_Transform : IKE Transform -ISAKMP_payload_VendorID : ISAKMP Vendor ID -IrLAPCommand : IrDA Link Access Protocol Command -IrLAPHead : IrDA Link Access Protocol Header -IrLMP : IrDA Link Management Protocol -L2CAP : L2CAP -L2CAP_CmdRej : L2CAP Command Rej -L2CAP_ConfReq : L2CAP Conf Req -L2CAP_ConfResp : L2CAP Conf Resp -L2CAP_ConnReq : L2CAP Conn Req -L2CAP_ConnResp : L2CAP Conn Resp -L2CAP_DisconnReq : L2CAP Disconn Req -L2CAP_DisconnResp : L2CAP Disconn Resp -L2CAP_InfoReq : L2CAP Info Req -L2CAP_InfoResp : L2CAP Info Resp -LLC: LLC -MGCP : MGCP -NBNSNodeStatusResponse : NBNS Node Status Response -NBNSNodeStatusResponseEnd : NBNS Node Status Response -NBNSNodeStatusResponseService : NBNS Node Status Response Service -NBNSQueryRequest : NBNS query request -NBNSQueryResponse : NBNS query response -NBNSQueryResponseNegative : NBNS query response (negative) -NBNSRequest : NBNS request -NBNSWackResponse : NBNS Wait for Acknowledgement Response -NBTDatagram : NBT Datagram Packet -NBTSession : NBT Session Packet -NTP: NTP -NetBIOS_DS : NetBIOS datagram service -PPP: PPP Link Layer -PPPoE : PPP over Ethernet -PPPoED : PPP over Ethernet Discovery -Packet : abstract packet -Padding: Padding -PrismHeader : Prism header -RIP: RIP header -RIPEntry : RIP entry -Radius : Radius -Raw: Raw -SMBMailSlot : SMB Mail Slot Protocol -SMBNegociate_Protocol_Request_Header : SMBNegociate Protocol Request Header -SMBNegociate_Protocol_Request_Tail : SMB Negociate Protocol Request Tail -SMBNegociate_Protocol_Response_Advanced_Security : SMBNegociate Protocol Response Advanced Security -SMBNegociate_Protocol_Response_No_Security : SMBNegociate Protocol Response No Security -SMBNegociate_Protocol_Response_No_Security_No_Key : abstract packet -SMBNetlogon_Protocol_Response_Header : SMBNetlogon Protocol Response Header -SMBNetlogon_Protocol_Response_Tail_LM20 : SMB Netlogon Protocol Response Tail LM20 -SMBNetlogon_Protocol_Response_Tail_SAM : SMB Netlogon Protocol Response Tail SAM -SMBSession_Setup_AndX_Request : Session Setup AndX Request -SMBSession_Setup_AndX_Response : Session Setup AndX Response -SNAP : SNAP -STP: Spanning Tree Protocol -SebekHead : Sebek header -SebekV1: Sebek v1 -SebekV2: Sebek v2 -SebekV2Sock : Sebek v2 socket -Skinny : Skinny -TCP: TCP -TCPerror : TCP in ICMP -UDP: UDP -UDPerror : UDP in ICMP -``` - -Let's instanciate an IP layer: - -```python ->>> IP() - ->>> a=IP(dst="172.16.1.40") ->>> a - ->>> a.dst -'172.16.1.40' ->>> a.ttl -64 -``` - -A layer has default values for every field, so that you don't have to fill them all. If you give a value to the field, it will overload the default value. If you delete the field, the default value will be back. Moreover, fields with default values are not displayed. - -```python ->>> a.ttl=32 ->>> a - ->>> del(a.ttl) ->>> a ->>> a.ttl -64 -``` - -Fields can be made human readable. For example IP and TCP flags : (note the rfc3514 compliance for IP). - -```python ->>> t=TCP() ->>> t.flags="SA" ->>> t.flags -18 ->>> t - ->>> t.flags=23 ->>> t ->>> i=IP(flags="DF+MF") ->>> i.flags -3 ->>> i ->>> i.flags=6 ->>> i -``` - -Some default values are not constant values. For example, the source IP of a packet will default to the IP of the interface that should be used to send a packet to the given destination, according to the local routing tables. - -```python ->>> a.dst -'172.16.1.40' ->>> a.src -'172.16.1.24' ->>> del(a.dst) ->>> a.dst -'127.0.0.1' ->>> a.src -'127.0.0.1' ->>> a.dst="192.168.11.10" ->>> a.src -'192.168.11.1' ->>> a.dst=target ->>> a.src -'172.16.1.24' ->>> a.src="1.2.3.4" ->>> a - |> -``` - -Here, you can guess that my routing table looks like : - -```python -$ route -n -Kernel IP routing table -Destination Gateway Genmask Flags Metric RefUse Iface -172.16.0.0 0.0.0.0 255.255.0.0 U 0 00 eth0 -192.168.11.00.0.0.0 255.255.255.0 U 0 00 eth1 -0.0.0.0 172.16.1.1 0.0.0.0 UG0 00 eth0 -``` - -We will see later that scapy has its own routing table. - -The / operator has been used as a composition operator between two layers. When doing so, the lower layer can have one or more of its defaults fields overloaded according to the upper layer. (You still can give the value you want). A string can be used as a raw layer. - -```python ->>> IP() - ->>> IP()/TCP() > ->>> Ether()/IP()/TCP() >> ->>> IP()/TCP()/"GET / HTTP/1.0rnrn" >> ->>> Ether()/IP()/IP()/UDP() >>> ->>> IP(proto=55)/TCP() > -``` - -Each packet can be build or dissected (note: in python _ (underscode) is the latest result) : - -```python ->>> str(IP()) -'Ex00x00x14x00x01x00x00@x00|xe7x7fx00x00x01x7fx00x00x01' ->>> IP(_) - ->>> a=Ether()/IP(dst="www.slashdot.org")/TCP()/"GET /index.html HTTP/1.0 nn" ->>> hexdump(a) -00 02 15 37 A2 44 00 AE F3 52 AA D1 08 00 45 00 ...7.D...R....E. 00 43 00 01 00 00 40 06 78 3C C0 A8 05 15 42 23 .C....@.x<....B# -FA 97 00 14 00 50 00 00 00 00 00 00 00 00 50 02 .....P........P. 20 00 BB 39 00 00 47 45 54 20 2F 69 6E 64 65 78 ..9..GET /index -2E 68 74 6D 6C 20 48 54 54 50 2F 31 2E 30 20 0A .html HTTP/1.0 . 0A . >>> b=str(a) ->>> b -'x00x02x157xa2Dx00xaexf3Rxaaxd1x08x00Ex00x00Cx00x01x00x00@x06x>> c=Ether(b) ->>> c >>> -``` - -We see that a dissected packet has all its fields filled. That's because I consider that each field has its value imposed by the original string. If this is too verbose, the method hide_defaults() will delete every field that has the same value as the default. - -```python ->>> c.hide_defaults() ->>> c ->>> -``` - -You can read packets from a pcap file and write them to a pcap file. You can make a graphical postscript/pdf dump of a packet or a list of packets (see ugly png image. postcript/pdf are far better quality...). - -```python ->>> a=rdpcap("/spare/captures/isakmp.cap") ->>> a - ->>> a[423].pdfdump(layer_shift=1) ->>> a[423].psdump("/tmp/isakmp_pkt.eps",layer_shift=1) -``` - -![](/img/isakmp_dump.png) - -For the moment, we have only generated one packet. Let see how to specify sets of packets as easily. Each field of the whole packet (ever layers) can be a set. This implicidely define a set of packets, generated using a kind of cartesian product between all the fields. - -```python ->>> a=IP(dst="www.slashdot.org/30") ->>> a - ->>> [p for p in a] -[, , , ] ->>> b=IP(ttl=[1,2,(5,9)]) ->>> b ->>> [p for p in b] -[, , , , , , ] ->>> c=TCP(dport=[80,443]) ->>> [p for p in a/c] -[>, >, >, >, >, >, >, >] -``` - -Some operations (like building the string from a packet) can't work on a set of packets. In these cases, if you forgot to unroll your set of packets, only the first element of the list you forgot to generate will be used to assemble the packet. - -Now that we know how to manipulate packets. Let's see how to send them. The send() function will send packets at layer 3. That is to say it will handle routing and layer 2 for you. The sendp() function will work at layer 2. It's up to you to choose the right interface and the right link layer protocol. - -```python ->>> send(IP(dst="1.2.3.4")/ICMP()) -. -Sent 1 packets. ->>> sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1") -.... -Sent 4 packets. ->>> sendp("I'm travelling on Ethernet", iface="eth1", loop=1, inter=0.2) -................^C -Sent 16 packets. ->>> sendp(rdpcap("/tmp/pcapfile")) # tcpreplay -........... -Sent 11 packets. -``` - -The function fuzz() is able to change any default value that is not to be calculated (like checksums) by an object whose value is random and whose type is adapted to the field. This enables to quicky built fuzzing templates and send them in loop. In the following example, the IP layer is normal, and the UDP and NTP layers are fuzzed. The UDP checksum will be correct, the UDP destination port will be overloaded by NTP to be 123 and the NTP version will be forced to be 4. All the other ports will be randomized. - -```python ->>> send(IP(dst="target")/fuzz(UDP()/NTP(version=4)),loop=1) -................^C -Sent 16 packets. -``` - -Now, let's try to do some fun things. The sr() function is for sending packets and receiving answers. The function returns a couple of packet and answers, and the unanswered packets. The function sr1() is a variant that only return one packet that answered the packet (or the packet set) sent. The packets must be layer 3 packets (IP, ARP, etc.). The function srp() do the same for layer 2 packets (Ethernet, 802.3, etc.). - -```python ->>> p=sr1(IP(dst="www.slashdot.org")/ICMP()/"XXXXXXXXXXX") -Begin emission: -...Finished to send 1 packets. -.* -Received 5 packets, got 1 answers, remaining 0 packets ->>> p ->>> ->>> p.show() ----[ IP ]--- version = 4L ihl = 5L tos = 0x0 len = 39 id = 15489 flags = frag = 0L ttl = 42 proto = ICMP chksum = 0x51dd src = 66.35.250.151 dst = 192.168.5.21 options = '' ---[ ICMP ]--- type = echo-reply code = 0 chksum = 0xee45 id = 0x0 seq = 0x0 ---[ Raw ]--- load = 'XXXXXXXXXXX' ---[ Padding ]--- load = 'x00x00x00x00' -``` - -A DNS query (rd = recursion desired). Note the non-null padding coming from my Linksys having the Etherleak flaw. - -```python ->>> sr1(IP(dst="192.168.5.1")/UDP()/DNS(rd=1,qd=DNSQR(qname="www.slashdot.org"))) -Begin emission: -Finished to send 1 packets. -..* -Received 3 packets, got 1 answers, remaining 0 packets - - an= - ns=0 ar=0 |>>> -``` - -The "send'n'receive" functions family is the heart of scapy. They return a couple of two lists. The first element is a list of couples (packet sent, answer), and the second element is the list of unanswered packets. These two elements are lists, but they are wrapped by an object to present them better, and to provide them with some methods that do most frequently needed actions. - -```python ->>> sr(IP(dst="192.168.8.1")/TCP(dport=[21,22,23])) -Received 6 packets, got 3 answers, remaining 0 packets -(, ) ->>> ans,unans=_ ->>> ans.summary() -IP / TCP 192.168.8.14:20 > 192.168.8.1:21 S ==> Ether / IP / TCP 192.168.8.1:21 > 192.168.8.14:20 RA / Padding -IP / TCP 192.168.8.14:20 > 192.168.8.1:22 S ==> Ether / IP / TCP 192.168.8.1:22 > 192.168.8.14:20 RA / Padding -IP / TCP 192.168.8.14:20 > 192.168.8.1:23 S ==> Ether / IP / TCP 192.168.8.1:23 > 192.168.8.14:20 RA / Padding -``` - -```python -If there is a limited rate of answers, you can specify a time interval to wait between two packets with the inter parameter. If some packets are lost or if specifying an interval is not enough, you can resend all the unanswered packets, either by calling the function again, directly with the unanswered list, or by specifying a retry parameter. If retry is 3, scapy will try to resend unanswered packets 3 times. If retry is -3, scapy will resend unanswered packets until no more answer is given for the same set of unanswered packets 3 times in a row. The timeout parameter specify the time to wait after the last packet has been sent. -``` - -```python ->>> sr(IP(dst="172.20.29.5/30")/TCP(dport=[21,22,23]),inter=0.5,retry=-2,timeout=1) -Begin emission: -Finished to send 12 packets. -Begin emission: -Finished to send 9 packets. -Begin emission: -Finished to send 9 packets. -``` - -```python -Received 100 packets, got 3 answers, remaining 9 packets -(, ) -``` - -A TCP traceroute. - -```python ->>> ans,unans=sr(IP(dst=target, ttl=(4,25),id=RandShort())/TCP(flags=0x2)) -*****.******.*.***..*.**Finished to send 22 packets. -***...... -Received 33 packets, got 21 answers, remaining 1 packets ->>> for snd,rcv in ans: -... print snd.ttl, rcv.src, isinstance(rcv.payload, TCP) -... -5 194.51.159.65 0 -6 194.51.159.49 0 -4 194.250.107.181 0 -7 193.251.126.34 0 -8 193.251.126.154 0 -9 193.251.241.89 0 -10 193.251.241.110 0 -11 193.251.241.173 0 -13 208.172.251.165 0 -12 193.251.241.173 0 -14 208.172.251.165 0 -15 206.24.226.99 0 -16 206.24.238.34 0 -17 173.109.66.90 0 -18 173.109.88.218 0 -19 173.29.39.101 1 -20 173.29.39.101 1 -21 173.29.39.101 1 -22 173.29.39.101 1 -23 173.29.39.101 1 -24 173.29.39.101 1 -``` - -Note that the TCP traceroute and some other high-level functions are already coded : - -```python ->>> lsc() -sr : Send and receive packets at layer 3 -sr1 : Send packets at layer 3 and return only the first answer -srp : Send and receive packets at layer 2 -srp1 : Send and receive packets at layer 2 and return only the first answer -srloop : Send a packet at layer 3 in loop and print the answer each time -srploop : Send a packet at layer 2 in loop and print the answer each time -sniff: Sniff packets -p0f : Passive OS fingerprinting: which OS emitted this TCP SYN ? -arpcachepoison : Poison target's cache with (your MAC,victim's IP) couple -send : Send packets at layer 3 -sendp: Send packets at layer 2 -traceroute : Instant TCP traceroute -arping : Send ARP who-has requests to determine which hosts are up -ls : List available layers, or infos on a given layer -lsc : List user commands -queso: Queso OS fingerprinting -nmap_fp : nmap fingerprinting -report_ports : portscan a target and output a LaTeX table -dyndns_add : Send a DNS add message to a nameserver for "name" to have a new "rdata" -dyndns_del : Send a DNS delete message to a nameserver for "name" -``` - -The process of sending packets and receiving is quite complicated. As I wanted to use the PF_PACKET interface to go through netfilter, I also needed to implement an ARP stack and ARP cache, and a LL stack. Well it seems to work, on ethernet and PPP interfaces, but I don't guarantee anything. Anyway, the fact I used a kind of super-socket for that mean that you can switch your IO layer very easily, and use PF_INET/SOCK_RAW, or use PF_PACKET at level 2 (giving the LL header (ethernet,...) and giving yourself mac addresses, ...). I've just added a super socket which use libdnet and libpcap, so that it should be portable : - -```python ->>> conf.L3socket=L3dnetSocket ->>> conf.L3listen=L3pcapListenSocket -``` - -We can easily capture some packets or even clone tcpdump or tethereal. If no interface is given, sniffing will happen on every interfaces. - -```python ->>> sniff(filter="icmp and host 66.35.250.151", count=2) - ->>> a=_ ->>> a.nsummary() -0000 Ether / IP / ICMP 192.168.5.21 echo-request 0 / Raw -0001 Ether / IP / ICMP 192.168.5.21 echo-request 0 / Raw ->>> a[1] >>> ->>> sniff(iface="wifi0", prn=lambda x: x.summary()) -802.11 Management 8 ff:ff:ff:ff:ff:ff / 802.11 Beacon / Info SSID / Info Rates / Info DSset / Info TIM / Info 133 -802.11 Management 4 ff:ff:ff:ff:ff:ff / 802.11 Probe Request / Info SSID / Info Rates -802.11 Management 5 00:0a:41:ee:a5:50 / 802.11 Probe Response / Info SSID / Info Rates / Info DSset / Info 133 -802.11 Management 4 ff:ff:ff:ff:ff:ff / 802.11 Probe Request / Info SSID / Info Rates -802.11 Management 4 ff:ff:ff:ff:ff:ff / 802.11 Probe Request / Info SSID / Info Rates -802.11 Management 8 ff:ff:ff:ff:ff:ff / 802.11 Beacon / Info SSID / Info Rates / Info DSset / Info TIM / Info 133 -802.11 Management 11 00:07:50:d6:44:3f / 802.11 Authentication -802.11 Management 11 00:0a:41:ee:a5:50 / 802.11 Authentication -802.11 Management 0 00:07:50:d6:44:3f / 802.11 Association Request / Info SSID / Info Rates / Info 133 / Info 149 -802.11 Management 1 00:0a:41:ee:a5:50 / 802.11 Association Response / Info Rates / Info 133 / Info 149 -802.11 Management 8 ff:ff:ff:ff:ff:ff / 802.11 Beacon / Info SSID / Info Rates / Info DSset / Info TIM / Info 133 -802.11 Management 8 ff:ff:ff:ff:ff:ff / 802.11 Beacon / Info SSID / Info Rates / Info DSset / Info TIM / Info 133 -802.11 / LLC / SNAP / ARP who has 172.20.70.172 says 172.20.70.171 / Padding -802.11 / LLC / SNAP / ARP is at 00:0a:b7:4b:9c:dd says 172.20.70.172 / Padding -802.11 / LLC / SNAP / IP / ICMP echo-request 0 / Raw -802.11 / LLC / SNAP / IP / ICMP echo-reply 0 / Raw ->>> sniff(iface="eth1", prn=lambda x: x.show()) ----[ Ethernet ]--- dst = 00:ae:f3:52:aa:d1 src = 00:02:15:37:a2:44 type = 0x800 ---[ IP ]--- version = 4L ihl = 5L tos = 0x0 len = 84 id = 0 flags = DF frag = 0L ttl = 64 proto = ICMP chksum = 0x3831 src = 192.168.5.21 - dst = 66.35.250.151 - options = '' ---[ ICMP ]--- type = echo-request code = 0 chksum = 0x89d9 id = 0xc245 seq = 0x0 ---[ Raw ]--- load = 'Bxf7ixa9x00x04x149x08tnx0bx0crx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f !x22#$%&'()*+,-./01234567' ---[ Ethernet ]--- dst = 00:02:15:37:a2:44 src = 00:ae:f3:52:aa:d1 type = 0x800 ---[ IP ]--- version = 4L ihl = 5L tos = 0x0 len = 84 id = 2070 flags = frag = 0L ttl = 42 proto = ICMP chksum = 0x861b src = 66.35.250.151 - dst = 192.168.5.21 - options = '' ---[ ICMP ]--- type = echo-reply code = 0 chksum = 0x91d9 id = 0xc245 seq = 0x0 ---[ Raw ]--- load = 'Bxf7ixa9x00x04x149x08tnx0bx0crx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f !x22#$%&'()*+,-./01234567' ---[ Padding ]--- load = 'n_x00x0b' -``` - -We can sniff and do passive OS fingerprinting. - -```python ->>> p ->> ->>> p0f(p) -(1.0, ['Linux 2.4.2 - 2.4.14 (1)']) ->>> a=sniff(prn=prnp0f) -(1.0, ['Linux 2.4.2 - 2.4.14 (1)']) -(1.0, ['Linux 2.4.2 - 2.4.14 (1)']) -(0.875, ['Linux 2.4.2 - 2.4.14 (1)', 'Linux 2.4.10 (1)', 'Windows 98 (?)']) -(1.0, ['Windows 2000 (9)']) -``` - -The number before the OS guess is the accurracy of the guess. - -Demo of both bpf filter and sprintf() method : - -```python ->>> a=sniff(filter="tcp and ( port 25 or port 110 )", - prn=lambda x: x.sprintf("%IP.src%:%TCP.sport% -> %IP.dst%:%TCP.dport% %2s,TCP.flags% : %TCP.payload%")) -192.168.8.10:47226 -> 213.228.0.14:110 S : -213.228.0.14:110 -> 192.168.8.10:47226 SA : -192.168.8.10:47226 -> 213.228.0.14:110 A : -213.228.0.14:110 -> 192.168.8.10:47226 PA : +OK <13103.1048117923@pop2-1.free.fr> -``` - -```python -192.168.8.10:47226 -> 213.228.0.14:110 A : -192.168.8.10:47226 -> 213.228.0.14:110 PA : USER toto -``` - -```python -213.228.0.14:110 -> 192.168.8.10:47226 A : -213.228.0.14:110 -> 192.168.8.10:47226 PA : +OK -``` - -```python -192.168.8.10:47226 -> 213.228.0.14:110 A : -192.168.8.10:47226 -> 213.228.0.14:110 PA : PASS tata -``` - -```python -213.228.0.14:110 -> 192.168.8.10:47226 PA : -ERR authorization failed -``` - -```python -192.168.8.10:47226 -> 213.228.0.14:110 A : -213.228.0.14:110 -> 192.168.8.10:47226 FA : -192.168.8.10:47226 -> 213.228.0.14:110 FA : -213.228.0.14:110 -> 192.168.8.10:47226 A : -``` - -Here is an example of a (h)ping-like functionnality : you always send the same set of packets to see if something change : - -```python ->>> srloop(IP(dst="www.target.com/30")/TCP()) -RECV 1: Ether / IP / TCP 192.168.11.99:80 > 192.168.8.14:20 SA / Padding fail 3: IP / TCP 192.168.8.14:20 > 192.168.11.96:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.98:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.97:80 S RECV 1: Ether / IP / TCP 192.168.11.99:80 > 192.168.8.14:20 SA / Padding fail 3: IP / TCP 192.168.8.14:20 > 192.168.11.96:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.98:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.97:80 S RECV 1: Ether / IP / TCP 192.168.11.99:80 > 192.168.8.14:20 SA / Padding fail 3: IP / TCP 192.168.8.14:20 > 192.168.11.96:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.98:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.97:80 S RECV 1: Ether / IP / TCP 192.168.11.99:80 > 192.168.8.14:20 SA / Padding fail 3: IP / TCP 192.168.8.14:20 > 192.168.11.96:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.98:80 S -IP / TCP 192.168.8.14:20 > 192.168.11.97:80 S -``` - -Now we have a demonstration of the make_table() presentation function. It takes a list as parameter, and a function who returns a 3-uple. The first element is the value on the _x_ axis from an element of the list, the second is about the _y_ value and the third is the value that we want to see at coordinates (_x_,_y_). The result is a table. This function has 2 variants, make_lined_table() and make_tex_table() to copy/paste into your LaTeX pentest report. Those functions are available as methods of a result object : - -Here we can see a multi-parallel traceroute (scapy already has a multi TCP traceroute function. See later). - -```python ->>> ans,unans=sr(IP(dst="www.test.fr/30", ttl=(1,6))/TCP()) -Received 49 packets, got 24 answers, remaining 0 packets ->>> ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) ) - 216.15.189.192 216.15.189.193 216.15.189.194 216.15.189.195 -1 192.168.8.1 192.168.8.1 192.168.8.1 192.168.8.1 -2 81.57.239.254 81.57.239.254 81.57.239.254 81.57.239.254 -3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 -4 213.228.3.3 213.228.3.3 213.228.3.3 213.228.3.3 -5 193.251.254.1 193.251.251.69 193.251.254.1 193.251.251.69 -6 193.251.241.174 193.251.241.178 193.251.241.174 193.251.241.178 -``` - -Here is a more complex example to identify machines from their IPID field. We can see that 172.20.80.200:22 is answered by the same IP stack than 172.20.80.201 and that 172.20.80.197:25 is not answered by the sape IP stack than other ports on the same IP. - -```python ->>> ans,unans=sr(IP(dst="172.20.80.192/28")/TCP(dport=[20,21,22,25,53,80])) -Received 142 packets, got 25 answers, remaining 71 packets ->>> ans.make_table(lambda (s,r): (s.dst, s.dport, r.sprintf("%IP.id%"))) - 172.20.80.196 172.20.80.197 172.20.80.198 172.20.80.200 172.20.80.201 -20 0 4203 7021 - 11562 -21 0 4204 7022 - 11563 -22 0 4205 7023 11561 11564 -25 0 0 7024 - 11565 -53 0 4207 7025 - 11566 -80 0 4028 7026 - 11567 -``` - -It can help identify network topologies very easily when playing with TTL, displaying received TTL, etc. - -Now scapy has its own routing table, so that you can have your packets routed diffrently than the system. - -```python ->>> conf.route -Network Netmask Gateway Iface -127.0.0.0 255.0.0.0 0.0.0.0 lo -192.168.8.0 255.255.255.0 0.0.0.0 eth0 -0.0.0.0 0.0.0.0 192.168.8.1 eth0 ->>> conf.route.delt(net="0.0.0.0/0",gw="192.168.8.1") ->>> conf.route.add(net="0.0.0.0/0",gw="192.168.8.254") ->>> conf.route.add(host="192.168.1.1",gw="192.168.8.1") ->>> conf.route -Network Netmask Gateway Iface -127.0.0.0 255.0.0.0 0.0.0.0 lo -192.168.8.0 255.255.255.0 0.0.0.0 eth0 -0.0.0.0 0.0.0.0 192.168.8.254 eth0 -192.168.1.1 255.255.255.255 192.168.8.1 eth0 ->>> conf.route.resync() ->>> conf.route -Network Netmask Gateway Iface -127.0.0.0 255.0.0.0 0.0.0.0 lo -192.168.8.0 255.255.255.0 0.0.0.0 eth0 -0.0.0.0 0.0.0.0 192.168.8.1 eth0 -``` - -We can easily plot some harvested values using Gnuplot. For example, we can observe the IP ID patterns to know how many distinct IP stacks are used behind a load balancer : - -```python ->>> a,b=sr(IP(dst="www.target.com")/TCP(sport=[RandShort()]*1000)) ->>> a.plot(lambda x:x[1].id) - -``` - -![](/img/ipid.png) - -Scapy also has a powerful TCP traceroute function. Unlike other traceroute programs that wait for each node to reply before going to the next, scapy sends all the packets at the same time. This has the disadvantage that it can't know when to stop (thus the maxttl parameter) but the great advantage that it took less than 3 seconds to get this multi-target traceroute result : - -```python ->>> traceroute(["www.yahoo.com","www.altavista.com","www.wisenut.com","www.copernic.com"],maxttl=20) -Received 80 packets, got 80 answers, remaining 0 packets - 193.45.10.88:80216.109.118.79:80 64.241.242.243:80 66.94.229.254:80 -1 192.168.8.1192.168.8.1192.168.8.1192.168.8.1 -2 82.243.5.254 82.243.5.254 82.243.5.254 82.243.5.254 -3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 -4 212.27.50.46 212.27.50.46 212.27.50.46 212.27.50.46 -5 212.27.50.37 212.27.50.41 212.27.50.37 212.27.50.41 -6 212.27.50.34 212.27.50.34 213.228.3.234 193.251.251.69 -7 213.248.71.141 217.118.239.149208.184.231.214193.251.241.178 -8 213.248.65.81 217.118.224.44 64.125.31.129 193.251.242.98 -9 213.248.70.14 213.206.129.85 64.125.31.186 193.251.243.89 -10 193.45.10.88SA 213.206.128.16064.125.29.122 193.251.254.126 -11 193.45.10.88SA 206.24.169.41 64.125.28.70 216.115.97.178 -12 193.45.10.88SA 206.24.226.99 64.125.28.209 66.218.64.146 -13 193.45.10.88SA 206.24.227.106 64.125.29.45 66.218.82.230 -14 193.45.10.88SA 216.109.74.30 64.125.31.214 66.94.229.254 SA -15 193.45.10.88SA 216.109.120.14964.124.229.109 66.94.229.254 SA -16 193.45.10.88SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA -17 193.45.10.88SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA -18 193.45.10.88SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA -19 193.45.10.88SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA -20 193.45.10.88SA 216.109.118.79 SA 64.241.242.243 SA 66.94.229.254 SA -(, ) -``` - -The last line is in fact a the result of the function : a traceroute result object and a packet list of unanswered packets. The traceroute result is a more specialised version (a subclass, in fact) of a classic result object. We can save it to consult the traceroute result again a bit later, or to deeply inspect one of the answers, for example to check padding. - -```python ->>> result,unans=_ ->>> result.show() - 193.45.10.88:80216.109.118.79:80 64.241.242.243:80 66.94.229.254:80 -1 192.168.8.1192.168.8.1192.168.8.1192.168.8.1 -2 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 -3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 -[...] ->>> result.filter(lambda x: Padding in x[1]) -``` - - -Like any result object, traceroute objects can be added : - -```python ->>> r2,unans=traceroute(["www.voila.com"],maxttl=20) -Received 19 packets, got 19 answers, remaining 1 packets - 195.101.94.25:80 -1 192.168.8.1 -2 82.251.4.254 -3 213.228.4.254 -4 212.27.50.169 -5 212.27.50.162 -6 193.252.161.97 -7 193.252.103.86 -8 193.252.103.77 -9 193.252.101.1 -10 193.252.227.245 -12 195.101.94.25 SA -13 195.101.94.25 SA -14 195.101.94.25 SA -15 195.101.94.25 SA -16 195.101.94.25 SA -17 195.101.94.25 SA -18 195.101.94.25 SA -19 195.101.94.25 SA -20 195.101.94.25 SA ->>> ->>> r3=result+r2 ->>> r3.show() - 195.101.94.25:80 212.23.37.13:80216.109.118.72:80 64.241.242.243:80 66.94.229.254:80 -1 192.168.8.1192.168.8.1192.168.8.1192.168.8.1192.168.8.1 -2 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 82.251.4.254 -3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 -4 212.27.50.169 212.27.50.169 212.27.50.46 - 212.27.50.46 -5 212.27.50.162 212.27.50.162 212.27.50.37 212.27.50.41 212.27.50.37 -6 193.252.161.97 194.68.129.168 212.27.50.34 213.228.3.234 193.251.251.69 -7 193.252.103.86 212.23.42.33 217.118.239.185208.184.231.214193.251.241.178 -8 193.252.103.77 212.23.42.6217.118.224.44 64.125.31.129 193.251.242.98 -9 193.252.101.1 212.23.37.13SA 213.206.129.85 64.125.31.186 193.251.243.89 -10 193.252.227.245212.23.37.13SA 213.206.128.16064.125.29.122 193.251.254.126 -11 - 212.23.37.13SA 206.24.169.41 64.125.28.70 216.115.97.178 -12 195.101.94.25 SA 212.23.37.13SA 206.24.226.100 64.125.28.209 216.115.101.46 -13 195.101.94.25 SA 212.23.37.13SA 206.24.238.166 64.125.29.45 66.218.82.234 -14 195.101.94.25 SA 212.23.37.13SA 216.109.74.30 64.125.31.214 66.94.229.254 SA -15 195.101.94.25 SA 212.23.37.13SA 216.109.120.15164.124.229.109 66.94.229.254 SA -16 195.101.94.25 SA 212.23.37.13SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA -17 195.101.94.25 SA 212.23.37.13SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA -18 195.101.94.25 SA 212.23.37.13SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA -19 195.101.94.25 SA 212.23.37.13SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA -20 195.101.94.25 SA 212.23.37.13SA 216.109.118.72 SA 64.241.242.243 SA 66.94.229.254 SA -``` - -Traceroute result object also have a very neat feature : they can make a directed graph from all the routes they got, and cluster them by AS. You will need [graphviz](http://www.research.att.com/sw/tools/graphviz/). By default, [ImageMagick](http://www.imagemagick.org/) is used to display the graph. - -```python ->>> res,unans = traceroute(["www.microsoft.com","www.cisco.com","www.yahoo.com","www.wanadoo.fr","www.pacsec.com"],dport=[80,443],maxttl=20,retry=-2) -Received 190 packets, got 190 answers, remaining 10 packets - 193.252.122.103:443 193.252.122.103:80 198.133.219.25:443 198.133.219.25:80 207.46... -1 192.168.8.1 192.168.8.1192.168.8.1192.168.8.1192.16... -2 82.251.4.25482.251.4.254 82.251.4.254 82.251.4.254 82.251... -3 213.228.4.254 213.228.4.254 213.228.4.254 213.228.4.254 213.22... -[...] ->>> res.graph() # piped to ImageMagick's display program. Image below. ->>> res.graph(type="ps",target="| lp") # piped to postscript printer ->>> res.graph(target="> /tmp/graph.svg") # saved to file -``` - -![Traceroute graph](/img/graph_traceroute.gif) [The same in SVG](/img/graph_traceroute.svg) - -You also can have a 3D representation of the traceroute. With the right button, you can rotate the scene, with the middle button, you can zoom, with the left button, you can move the scene. If you click on a ball, it's IP will appear/disappear. If you Ctrl-click on a ball, ports 21, 22, 23, 25, 80 and 443 will be scanned and the result displayed. - -```python ->>> res.trace3D() -``` - -![3D trace of a traceroute](/img/trace3d_1.png) -![3D trace of a traceroute](/img/trace3d_2.png) - -Provided that your wireless card and driver are correctly configured for frame injection - -``` -$ ifconfig wlan0 up -$ iwpriv wlan0 hostapd 1 -$ ifconfig wlan0ap up -``` - -you can have a kind of FakeAP. - -```python ->>> sendp(Dot11(addr1="ff:ff:ff:ff:ff:ff",addr2=RandMAC(),addr3=RandMAC())/ - Dot11Beacon(cap="ESS")/ - Dot11Elt(ID="SSID",info=RandString(RandNum(1,50)))/ - Dot11Elt(ID="Rates",info='x82x84x0bx16')/ - Dot11Elt(ID="DSset",info="x03")/ - Dot11Elt(ID="TIM",info="x00x01x00x00"),iface="wlan0ap",loop=1) -``` \ No newline at end of file diff --git a/download.md b/download.md index 5148e42..68f2796 100644 --- a/download.md +++ b/download.md @@ -27,4 +27,8 @@ date: 2019

Development version

- \ No newline at end of file + + +## Python versions support + +Scapy versions \ No newline at end of file diff --git a/img/graph_traceroute.gif b/img/graph_traceroute.gif deleted file mode 100644 index 64e332c..0000000 Binary files a/img/graph_traceroute.gif and /dev/null differ diff --git a/img/graph_traceroute.svg b/img/graph_traceroute.svg deleted file mode 100644 index 6782e34..0000000 --- a/img/graph_traceroute.svg +++ /dev/null @@ -1,893 +0,0 @@ - - - - - -trace -cluster_AS12322 - -AS12322 -[ProXad network / Free SAS -Paris, France] - -cluster_AS109 - -AS109 -[Cisco Systems, Inc.] - -cluster_AS24600 - -AS24600 -[France Telecom -WANADOO-PORTAILS-BAGNOLET] - -cluster_AS5511 - -AS5511 -[France Telecom -OPENTRANSIT] - -cluster_AS16626 - -AS16626 -[DV2] - -cluster_AS3215 - -AS3215 -[France Telecom -FR-FT-IP-BRX] - -cluster_AS8072 - -AS8072 -[Microsoft Dublin Route announced to Telecom Eireann AS5466] - -cluster_AS10310 - -AS10310 -[Frontier GlobalCenter Customer Subnet 216.115.96.0/20] - -cluster_AS14779 - -AS14779 -[/20 to re1] - -cluster_AS8075 - -AS8075 -[Microsoft] - -cluster_AS1239 - -AS1239 -[Sprintlink] - -212.27.50.37 - -212.27.50.37 - -213.228.3.234 - -213.228.3.234 - -212.27.50.37->213.228.3.234 - - - -193.251.251.69 - -193.251.251.69 - -212.27.50.37->193.251.251.69 - - - -212.27.50.37->193.251.251.69 - - - -212.27.50.37->193.251.251.69 - - - -212.27.50.34 - -212.27.50.34 - -217.118.239.149 - -217.118.239.149 - -212.27.50.34->217.118.239.149 - - - -217.118.239.141 - -217.118.239.141 - -212.27.50.34->217.118.239.141 - - - -212.27.50.169 - -212.27.50.169 - -212.27.50.162 - -212.27.50.162 - -212.27.50.169->212.27.50.162 - - - -212.27.50.169->212.27.50.162 - - - -193.252.161.97 - -193.252.161.97 - -212.27.50.162->193.252.161.97 - - - -212.27.50.162->193.252.161.97 - - - -208.184.231.214 - -208.184.231.214 - -213.228.3.234->208.184.231.214 - - - -213.228.3.234->208.184.231.214 - - - -213.228.4.254 - -213.228.4.254 - -213.228.4.254->212.27.50.169 - - - -213.228.4.254->212.27.50.169 - - - -212.27.50.46 - -212.27.50.46 - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -213.228.4.254->212.27.50.46 - - - -212.27.50.46->212.27.50.37 - - - -212.27.50.46->212.27.50.37 - - - -212.27.50.46->212.27.50.37 - - - -212.27.50.46->212.27.50.37 - - - -212.27.50.41 - -212.27.50.41 - -212.27.50.46->212.27.50.41 - - - -212.27.50.46->212.27.50.41 - - - -212.27.50.46->212.27.50.41 - - - -212.27.50.46->212.27.50.41 - - - -212.27.50.41->212.27.50.34 - - - -212.27.50.41->212.27.50.34 - - - -212.27.50.41->213.228.3.234 - - - -212.27.50.41->193.251.251.69 - - - -82.251.4.254 - -82.251.4.254 - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -82.251.4.254->213.228.4.254 - - - -128.107.239.5 - -128.107.239.5 - -128.107.224.77 - -128.107.224.77 - -128.107.239.5->128.107.224.77 - - - -128.107.239.5->128.107.224.77 - - - -198.133.219.25 - -198.133.219.25 - -80: SA - -443: SA - -128.107.224.77->198.133.219.25 - - - -128.107.224.77->198.133.219.25 - - - -193.252.122.103 - -193.252.122.103 - -80: SA - -193.252.122.2 - -193.252.122.2 - -193.252.122.103:443 - -193.252.122.103:443 - -193.252.122.2->193.252.122.103:443 - - - -193.252.122.18 - -193.252.122.18 - -193.252.122.2->193.252.122.18 - - - -193.252.122.18->193.252.122.103 - - - -193.251.240.157 - -193.251.240.157 - -207.46.45.73 - -207.46.45.73 - -193.251.240.157->207.46.45.73 - - - -207.46.45.69 - -207.46.45.69 - -193.251.240.157->207.46.45.69 - - - -193.251.242.98 - -193.251.242.98 - -193.251.243.89 - -193.251.243.89 - -193.251.242.98->193.251.243.89 - - - -193.251.242.98->193.251.243.89 - - - -193.251.242.98->193.251.243.89 - - - -193.251.242.98->193.251.243.89 - - - -193.251.241.178 - -193.251.241.178 - -193.251.241.178->193.251.242.98 - - - -193.251.241.178->193.251.242.98 - - - -193.251.241.178->193.251.242.98 - - - -193.251.241.178->193.251.242.98 - - - -193.251.251.69->193.251.241.178 - - - -193.251.251.69->193.251.241.178 - - - -193.251.251.69->193.251.241.178 - - - -193.251.251.69->193.251.241.178 - - - -193.251.243.89->193.251.240.157 - - - -193.251.243.89->193.251.240.157 - - - -193.251.254.126 - -193.251.254.126 - -193.251.243.89->193.251.254.126 - - - -193.251.243.89->193.251.254.126 - - - -216.115.96.191 - -216.115.96.191 - -193.251.254.126->216.115.96.191 - - - -216.115.96.195 - -216.115.96.195 - -193.251.254.126->216.115.96.195 - - - -63.247.94.98 - -63.247.94.98 - -80: SA - -443: RA - -209.51.131.94 - -209.51.131.94 - -209.51.131.94->63.247.94.98 - - - -209.51.131.94->63.247.94.98 - - - -193.252.161.73 - -193.252.161.73 - -193.252.99.69 - -193.252.99.69 - -193.252.161.73->193.252.99.69 - - - -193.252.161.73->193.252.99.69 - - - -193.252.103.86 - -193.252.103.86 - -193.252.161.97->193.252.103.86 - - - -193.252.161.97->193.252.103.86 - - - -193.253.13.30 - -193.253.13.30 - -193.253.13.30->193.252.122.2 - - - -193.253.13.30->193.252.122.2 - - - -193.252.99.69->193.253.13.30 - - - -193.252.99.69->193.253.13.30 - - - -207.46.36.146 - -207.46.36.146 - -207.46.155.37 - -207.46.155.37 - -207.46.36.146->207.46.155.37 - - - -207.46.36.146->207.46.155.37 - - - -206.190.33.6 - -206.190.33.6 - -216.115.96.191->206.190.33.6 - - - -206.190.33.10 - -206.190.33.10 - -216.115.96.195->206.190.33.10 - - - -68.142.226.35 - -68.142.226.35 - -80: SA - -443: SA - -206.190.33.6->68.142.226.35 - - - -206.190.33.10->68.142.226.35 - - - -207.46.129.146 - -207.46.129.146 - -207.46.156.156 - -207.46.156.156 - -80: SA - -443: SA - -207.46.129.146->207.46.156.156 - - - -207.46.129.146->207.46.156.156 - - - -207.46.155.37->207.46.129.146 - - - -207.46.155.37->207.46.129.146 - - - -207.46.46.130 - -207.46.46.130 - -207.46.45.73->207.46.46.130 - - - -207.46.34.53 - -207.46.34.53 - -207.46.34.53->207.46.36.146 - - - -207.46.34.53->207.46.36.146 - - - -207.46.46.130->207.46.34.53 - - - -207.46.46.130->207.46.34.53 - - - -207.46.45.69->207.46.46.130 - - - -144.232.20.181 - -144.232.20.181 - -144.232.3.218 - -144.232.3.218 - -144.232.20.181->144.232.3.218 - - - -144.232.20.181->144.232.3.218 - - - -144.232.20.97 - -144.232.20.97 - -144.232.16.93 - -144.232.16.93 - -144.232.20.97->144.232.16.93 - - - -144.232.20.97->144.232.16.93 - - - -144.232.20.163 - -144.232.20.163 - -144.232.20.163->144.232.20.181 - - - -144.232.20.163->144.232.20.181 - - - -144.232.20.45 - -144.232.20.45 - -144.232.7.110 - -144.232.7.110 - -144.232.20.45->144.232.7.110 - - - -144.232.20.45->144.232.7.110 - - - -144.232.7.110->144.232.20.97 - - - -144.232.7.110->144.232.20.97 - - - -217.118.224.44 - -217.118.224.44 - -217.118.224.44->144.232.20.45 - - - -217.118.224.44->144.232.20.45 - - - -144.232.3.134 - -144.232.3.134 - -144.232.3.218->144.232.3.134 - - - -144.232.3.218->144.232.3.134 - - - -144.228.44.14 - -144.228.44.14 - -144.232.3.134->144.228.44.14 - - - -144.232.3.134->144.228.44.14 - - - -144.228.44.14->128.107.239.5 - - - -144.228.44.14->128.107.239.5 - - - -217.118.239.149->217.118.224.44 - - - -217.118.239.141->217.118.224.44 - - - -144.232.16.93->144.232.20.163 - - - -144.232.16.93->144.232.20.163 - - - -192.168.8.1 - -192.168.8.1 - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -192.168.8.1->82.251.4.254 - - - -64.125.31.129 - -64.125.31.129 - -208.184.231.214->64.125.31.129 - - - -208.184.231.214->64.125.31.129 - - - -64.125.31.186 - -64.125.31.186 - -64.125.31.129->64.125.31.186 - - - -64.125.31.129->64.125.31.186 - - - -64.125.28.230 - -64.125.28.230 - -64.125.31.186->64.125.28.230 - - - -64.125.31.186->64.125.28.230 - - - -64.124.11.26 - -64.124.11.26 - -64.125.28.230->64.124.11.26 - - - -64.125.28.230->64.124.11.26 - - - -64.124.11.26->209.51.131.94 - - - -64.124.11.26->209.51.131.94 - - - -193.252.103.86->193.252.161.73 - - - -193.252.103.86->193.252.161.73 - - - - - diff --git a/img/ipid.png b/img/ipid.png deleted file mode 100644 index e710047..0000000 Binary files a/img/ipid.png and /dev/null differ diff --git a/img/isakmp_dump.eps b/img/isakmp_dump.eps deleted file mode 100644 index 1b33016..0000000 --- a/img/isakmp_dump.eps +++ /dev/null @@ -1,2425 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%BoundingBox: 25 -15 531 371 -%%HiResBoundingBox: 25.3465 -14.2758 530.286 370.923 -%%Creator: PyX 0.8.1 -%%Title: /tmp/isakmp_dump.eps -%%CreationDate: Tue Oct 25 10:02:51 2005 -%%EndComments -%%BeginProlog -%%BeginFont: CMSS10 -%Included char codes: 13 34 39 46 48 49 50 51 52 53 54 55 56 57 58 65 68 69 70 73 75 76 77 78 80 83 85 91 93 97 98 99 100 101 102 103 104 105 107 108 109 110 111 112 114 115 116 117 118 120 121 -%!PS-AdobeFont-1.1: CMSS10 1.0 -%%CreationDate: 1991 Aug 20 17:33:34 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /CMSS10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 13 /fl put -dup 34 /quotedblright put -dup 39 /quoteright put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 65 /A put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 83 /S put -dup 85 /U put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-61 -250 999 759}readonly def -/UniqueID 5000803 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5CF7158F1163BDCEEA888D07B439DBD4E8B4C9 -D198C03874B5E6F8FBF4922065A92BC3E66D05DE53971CB1424510E892442858 -D69CE1F76E4DA76C87C763A4B2FE36321E54B1328C9155B8ED6361855A151723 -3386AEA3D042B8D89C8C0E9A33E5DF3B466F7BB8C2C8A4ED4CDAFF55FC6D3EE6 -0AF2CEBFC1AC3A6E6692F8BB81F82D86BAE85016AD62FCB05467082C2E5AD348 -44D1439C2B59F65590E57CA0DE481A7A34E79931B1513C4C30156170409A4BB8 -46D412D1DAF88AD30722F12DBCA1CCC6B4BCC28D06B0D29149DDEC520C8FBA13 -6B82E2E1790F00B216282FF122EF0D47B70A1B29514DDF7C0435ED238C14BDF5 -6DA243117FBEF7398F97EB95597707ED63C6797EBA1B46EA19ABB1DABDA171B3 -16CD500F5D64CBFBE4F9CBC3E66A34427D3C4D0C432710289381F9BFD91B4FF4 -1E3A896C3EEA2F3105C218877D6C0C6B763760FA364D00065E1CAE9DCB5676ED -286A9ED0D1C946DCA6A2A670EE0936FB4706CC62E234CFEED34AA615C48D2872 -A087F30990C85E64BA68F3D5C117123467DB411C9F2D6F6858CC70C1E352C477 -713097321B4C4FD4C5CDE305415F998E7245908EEDE6E056A736EA77BD8C639C -3A79FFD0B74B3D28F0494A115F2841CF8A8827AB5608F96FD8998A5F40FB3DFE -3AA0C7696DE4E1D18DC0D6E84B943175FC38FFC42A9C0CBB13A908978C98BFE5 -034F88480F32B9DEB2FD228FF6CB0B89B045AB02020C82E3F5716DC640613185 -9F597CE262729BC52132F43922B9E28BB71A30AC8709634561B22D13C4FAFE0A -12C4451969226B220038AD8DDA990A4E2CAD53DBEAB698898BBD3046234EB4EA -901287E71CB41296C431383AB85F18882F65BE36923F6C0FD6FADCB0361FBCD9 -E8F276DC1E45ABA7C4597EADC09D0E2C27063BC6F0872C080FBFC0B9B41961B5 -03641807AF853F4B10CC11FEBD2786BC2309B83C51B67B502C033C7A63E4A3ED -7E4D56339CE35A0B2C3A95E7257FC25F3D2B13790C8F3512CACDCA9966A7045B -DBD30AAA76CCF6D05942C57D80EC527858944D717708A576BC50F7A1325E51A5 -845C08A60C2C0AAE44589A1857D9CABF91EE500DC032CAC68FCE63CE1D78D482 -470618E5B10E5EAA7F7C7353A987373031D1E482F2E7631B4A9E7970518A2CE0 -C721A42BBCE1D0B4B4BE0A3DCF6045F0875EEA4095B922183B3D551FB422C6C0 -369833AFD2415BF349F40C542DF60F6A47C71F839F1344E1B39B12CD26443153 -123EBF1C1AFE172965A9904BA052E00119147395DBDD9B6BED3FD8D834B2F201 -AC05A45B42BE9AE6B0AE22BEE509A7C449610F705081CC359143616A1A38D559 -8D34EA6828867288918CACF303B9E3846E12CF80BADA6FFB6D560F2524506E4F -0E2F612D32ACBE73F97CECA76606424A374C53B492D132382CC96E075C0FB434 -A9EA9F088FCA0B595E38D18336D614FD5A412A3F42C58DE48C85B54038CBC591 -E6986B20AD0C196B9C63242279E71048F066BF823EC396633D021275C3BD9142 -65E183EDE2D0D9BE7BA0E643075AA1E46C9A3943888670E3ED524063EDFAF8BA -5019BCDA8AFF3FE43370C1161F13D4078B481A19FA019919182CA8767DE05E79 -EE8438600C2A603BC6F360119F24B5739A6CBEE1E5FCB1F2A1DE1C2352D70340 -AAF9A5EB6B9123009BA28B72B149460FE2D34D01B0DAE4FFC4A78B004E8958B3 -E9772813AE03A7ECE7346738A9BEC86CADB193FB9A7D21A2C72A77CF4FDAA42C -6094CB48491327E0A7E3503D39FE3029698A209DFD22F1693FE66E38C0AB725C -E7F9E8062D3A645A8963FB81CED3B74FB19A97F834242112A1C6CA49A2672DF6 -871D60FCE58D73AC9209D55B365FA0A14B5E79EB4844343C96572067C2FA9947 -3AFE9FE0661F470165D2181842DBCD5D6ADACFD2E0E6B465CEA628B149A3B824 -99A3391E372050047F70771D8C6EC62CE5BC8EB826A542AB2EA0ED78E5D71D6A -B16E46787402E90A1EFF0035D90BEC75603E8D29C141E22B3890CA4FBDE2FD71 -FBCABDCF5BFD9222586D484525E5B9EA347D4071015DC0325F3B4DC5E4C16B93 -0531FC8593EF843E6973BCCF056934D58494B59B11894A6C807B3F31253DAD02 -9A78CD68D1B0D551E3956E1D7BA1001FC3E9A63752D3167774A7CEF3D3A9D242 -850B4AB4365FDE0305F8F4E6BF31FFBC42FC33B202AA7471CDCAC2D275DA0E2F -E4EDEAF15E6157F4EE7B4CD32474C2A8C91C2B35EE0355AFE0A055B5E41317E0 -A85C4F79610C0C1DBF90AF9EBBC43DC107760D39947A9A44762042B5EC0284DA -E197C669599E541A21B686938BE292C735992A5BF30CDDF64C2ED9C9099CD929 -FAEBFEAF300A33A13ED9774881CCB5B0CBBB7B0260688019999D0EDD52CD2FA3 -668CEA8DF423C7D5EC26020AA9D4DC314784FE8AD2E6359F8AE6437FEDBC5D1A -08C6063050B0746EEECB008AE958B5253C367ADCA2E3024AC9733A6DB75D9709 -46F9D8D999EBD888F45E860B43E8F3F185BB0C91E894FB19D523664B9097BB91 -A7057C3769C63225DD50A33BAFAADDC50163A6D795B1B794B05505283E4F991E -DFF7DE71A7A11AD0FBF924AF8F179D214707717C8C59215E910D9C3BA6C4B84B -091D6B73BE48CA9CBB9FE046B8C1D426F75A2A1AF4D0C7D54D66B5BEA8B32A33 -3A3D58B763168FF2B95067F4F0BF801C1EB8FE3606CA9515023D16A4372A4F8B -A974AC4B94D8AFA8027C4CEAABF33CBD09711B23B5579F3533BACA803B390554 -DA636A56490789244ED0CC969A7D3CD3B6C91F1C9B69F0976D820D5D25731176 -C65A85A38B2FEC5FAE696FBD2F68FCCED50E17D41DF6D3A54483656BE7631EDD -8F619D2E636CD131F8B4FAE68754CDECD811DBD79EC929E65C25906B29030CBE -0FF9EE6CFB6480E0F503EF917E4F663FB335DC0021F21889E1021F6D1C1A94DD -0CB64DF9C084CD94A3A0468526F154AAC2E824FBC1738204F81581C7892E2F9C -6249177FBBF1B5C20027F99585351FAEA24782E3197CC8BA558F2FB8C0D4A24F -9493B75465E3D69A423D436D274FC674926145C38274842BE4D1209FF1AAA38F -E8F7BC4A93C2FFFA7C799488DBF7495FC4CC0C316ADDA1509E0374A44331DAF1 -9E924B5B5C1178FE32A0F8C6368E076A0E8D16137DFBAF0DAC8CE6B2ABEF2A04 -91941D4934472162CA3A52FC516F1BAA203C4D152434E982DBF753B71031B334 -88853C4881028075A8207FA99FBAFA822E2CB1A04CF2AD90B78C078065B6C744 -53A572966AC36D1DEDBCF08B18B3A53B727CA589D5596CEB6E5982B3560FD95C -55E0ADF8F73A8C274AA810568A55C2CD76DD7853344906E7D03E6F7DD6589E79 -05848FFCAA764FD11D42EAAE7B5E511D3FED909FAE828ECFA1DBD9A0EF75D63F -EE5ECFDE38D0B9A709A9C7D2F626F7C8D3B60F046779DAA9008C1F8F4DC78FD1 -D358F8FE702A185DA9A9519ABE7B8E1CEF24061B1993AA467AA1C14DB556DB50 -B208C3D3E1F4DBFC1568041ACFEEEC29063AD043B844AC7827EB7A476F4C406A -34C7BA8F4D09F5D7B57B7D148D470E61B2A635AE34F79C1486B1DB08F55344D1 -CFD259D1FB885E3ECEFD0558E4BC339A4B2832924FE93157F54F23F85E9D8E02 -857AAD36B3DAF4BEDFDB26925A5653508AA742805B82448BEEBB3490DB8E80DE -1AE5A2F0D7F22585569EC44A6DE3C49B1A63523A268D05183039679651F26B63 -6068C94C9B09DEB6B7108CE0E1D9CB448A77ABABBB9456EFB6B271F3D705EA47 -7918DD4A8815FFC28B32E333D527BD1CD95C23657419EAF64CEC15FEE24750EE -6CD25652B866BBA85277825FA7CA426EF37D1D618ECA23BBA8A5906B977AC35A -C6BBB3B0DB05D0E50A37589351C3652345A97C9C7627394843A8E9221E723317 -7DEEF91DDFF1D17E6A5A3F2D7945365F7E94F8FCBEE801564183F210F466F8C3 -30DC220B354EBECCD7B6D60FB53316060A1DDFE86DC56923F0070645968C79EE -6397E5E0B5130D653A47CC38AE98E2E4253CD72806E7F4A28A1202A5DF990982 -C02C81860CDEFC9FD0622DA33ED9D03D8802CF8E07F9300A90E68D8E7767939E -F4667F901747BD82CA54D1199EEC15B96D85BC89E3B42853D01E158D3FD14562 -D88E55397D11E425D4E2ABA681DD866D4A15D2E50D6E59D98A0FB2D9E38977D6 -659BEAA58AB13A78BE0A83A07E96ADADC66CA9DD22E1498807486B778E90F1BD -5FA64B1319EB3589D18B2702AF2ED9B959B3B4220C8E49A3D1F86D4721834265 -A9F74BAAD5FE68F4F25A6A071678B7805681F71302E1FFF099A20A8C3AA8E58D -0D2FFCB880DF78A6F970EB924612C5EF913687A57168FB0BD921166F1D759EAB -E6736AD25270B3D9A2B09B097A13DA573903D1366FA3297324FCA5DE1BFD0328 -FC521BD9D093B483A391D98E969DCC4EA0BD47A217F649CA0DA3A73514A26869 -AD87C9128DC4406136293EB390C37F91DBB20B1002264EED0C932B863FAE2F7E -C8BD8C5A77E362B3094C7718D9984C008F50B8DB09E7FDCD5B3B121E1F57A9C5 -8E9742E76BA495F73A6F58944F6905446B82F57BFA489CA19C17742FA9CF6D75 -E2A0FBCB5440E23E4982A66063F19EAD483B5E40A37B0CEFFB55C2627D8CCCC2 -FF33869880EB482BB62BBFE37BFD9B469932A9DA758594ED889B1FC6B494760B -ED7152690B99EC18AE9AE1F3432D4AF195E3593B6F96EC1BF9ED353438542BDA -1EF7DC56C52B65B678BAE5CD025D0456B8D9D772B9DB91B59DE67FC0D73215AD -1782CCC2D07460904EA495D825BF2A9144B499ACF933FB2920DFA780B2754AB4 -8FF342B2CFFA44FD755518488D05D7FB77079F6526A80BEB956091860218E97D -D540AEF2DAC8A6847373E063B5B9DCC02981F8F18A63948D53FDF470447CA87E -799E54C484363A65DFE14E65BC03A5224F33ADB5219F16D240BA0BE7F9597748 -A50FD2BFDB918612AB6285640FAE5B3A7403A13EEFD417E726946B87FFEB3D0C -378814CC043CB2A18A29783C208DD605900E7906E62EBB916225DA3FEAFE8F95 -FBC34C5AA7F14630A8C1B3741A3B1102077ED8FC93E57277BE39F873B0DCC1E0 -F0EB430C8DF7EC7FD45F47CF5B818F504494D490E8063CC33B05EE958BF40D22 -FC899BA942EDBB39AE6BCAC6AB5FF10307B3DDCDC2DE5A13E7ED7A1EB31A61CF -85FD67EEC96C843A81E524A85D09E22E065ABFEC0AD1068E48522397FFFCE7FB -1238C4022B0492A4BF493F137EAD1EDE19C04938A722D60DC94FE860FA04929D -AE19D260FD67998342E6717F5A4D7E410358EEC41D30CF4750447C3CF1844CBC -300678435088006C915AAB999000031CA2A554E249D8BE36A3C7853DC7E1B087 -9428B3CCDB8505325AFDE76F7FEEB662BA408AAF8A6DCB5BA30A7A7E4789AD21 -AA1CEF92A80598F50AB7BEC5D991E93066FF1257E53293DB703635C8316F32FD -88D8771E6313716EAEB1498F1BDF179F415A45E72282D6076E1351CE0D205013 -6CDEF773D760D8B11231DB540A914475BF067BA817D1522EFE3668D017EDD868 -77493A97F503955C795F6C115D3AFCC29ABEFEDAF9D87271C010988D8D227124 -6431408B3B06D7EF85D9D638086800DD087B6895F42560BB21E6BC9C51654D20 -D4914624EB472AB0A97C6D2E012574D818A37785799B4657DD388EF8385B65DA -7D051070DEC38C8F1F49B4DF9DBA48D55FF10A9F5F17FECB9F1641D387C1B412 -A5548CD8CA67E2E2BA431369E012ADD38AE32735B458C01C425068CBFA274170 -693324EC8D293BDEBC1C1B694B951DF721A549A896580707D8103A5F15CF54D0 -23ED719ED7F3A43B6E320DD5B15E18B6F95920275DFF65C7B418B5B23A48B0B8 -CF0B5A5C805636174464F7A89DC2AAB1C2FEE1C114A3A005C00D333136390C89 -D0025DA45C54538CF0FCFB91C2FB5B4D1F9465189B19A5ABA2626653668B2E65 -E28B3E8EAFC9E666C8709CB09F8DD81AFB11B5776D36F9E9CBB22C2F27E7CE85 -8FF8CA8D11BB1033FDD08E01F2533E8D9E2EAB22C5ADF590B379C110072C59A4 -270FFF104CCFE3A3F4C0C14583211A46848D70AA4F017278D14457439E82667E -E8F4C560AEB7F0A63ECE1A4E92E4280599921584B29CECB7E5DF07514B672902 -61933409ABAAF8C42D035C3200053979EAB44DA64A83E26BD12F2D752A9959EB -9E0C462C82E1C9EF33CE4649709FF6AEF0503DF8971CB471748E28901E8D171B -4B0EC6A686CB3092A878C01D1F6CE42222EC828917E8F0527D32C893FDC96655 -64EFDA3771E041A77E6AD9152A989D580CE575AF3F129254621573C44C5C2DA5 -1B519BEF1E320F3067E9E6BB057CBD69EE8F52ACEE178B6939002C06B6F09245 -B7AAED6A9A2DDFF1C291E01AE01F59D56EFC9E3A9A969E25DE603243C22B84B7 -91FC15A33C37E5B563CDEDF57920954D89178DFFECF9D03055D60D71EC405D24 -25A7B12B58E9167229493237D35114E449B2A00C395F70538402A3567859634C -C08ECCE992E2097CE99BF0DCEB0AF7E644EA1CF8322D5421FC1A57C395B054BE -E17DDD4400746593CFEF7972816DB5DFCEDC111F76BF464897C505908DA82FF2 -8D8DB0BC99B8DE571C3325EEDFC5F5C7E44F82369D4B7A40D917E9C35B9BD206 -8340E5E44D0F71738578067AA8B2B561E9A24E61DCDFC4B49A1B54CBCF040AE6 -CDB2A5E0638A739DA1409187C8080AE27F4C208CF20AD7D142B63BFD18EFB5F6 -8B6BBAE8623BB918125EFA47A181F0BBF034C10E71E30D000C40CE82DE41EB06 -114DC9BB38A456B47A68D2E7D874408C6CFEF10EB75644ECAE2B31D6BB8D4CF8 -DC94A77140B0AF326D8D0E64B60CBF487BA840521319CD02D38C9923F4B955AE -CE546009F29544777D0F9082A26B765746D69332903B05C0AA9A1AFE072606D6 -B42DC329C567D662F339AF4B4A5DCF8E758AAF6F3A275447EFB12E04C26F31AC -8CF384DB80AFBEC60D775984649E5160AC77DEDFE5648524DE3E7BAF5486A339 -0A69AF23E4754B273157C0A6A3DA6B0D92071E6CEDD69511CFB61F6C2098980D -66A74013B28DAC47BA712B946C8C2E43E871030589A5B34FE3FAE64A930064B0 -993434F1469E36D04AC19C24F7CE7FC997684AFDB4FE557B576AF003B9016473 -7CBD09510A7D329BD88D6643AEF91108EF785DB5A19B92E06FF690CD20ACBA7E -93C23BAB165FCED93785D9B268989D5CC59F71317B69CCB5EA6B07D6FB0C357C -1F48948A2E31D903EA39E0073616A5D1D3FE820C692EE4ABCFDC7F6A6BF882BE -20EBC125769BA7EF4445C9CCFC8AD001B60B101076AC59C0998F1EBC3A815A49 -04EBE12BDCD5A9377F3CA9AF2AF269315216115ACF7214965C155E6B03FFC79B -D63CC3F77B48A5C4DE4B8FC910428B50A420289CD73D7D181E37BA64F01CCC12 -A6C8842AAE2A7718D987C8682437AF7B0FF9ACD9E01EFAD0FB3D641B65A9F333 -68BF3685A3469B1D4E99E75C6B8464AB7E29CA5B8F0A1159C8FB026128060B71 -9DB00AC246F9EFC88D237C3F3E6CFE93A9DBC957EDC690EC148D1FEA9C747BD7 -4818698F988D3FE94040FB5A264201C8A26F32F20A995568C933290950C44C59 -98A943BB58CD4F90AF5779119372254F6AEF15BB07145A70B7C0B6FB781E4E38 -2BC8C8531D5B9DE996B3633CEA387A4C0CB595CCED5BDF0DCDE2773494DF323A -2B5A9C5C4CB37A7DB0758EEEA508E6CF9433B6F89A5EEF8E58985197B8D63363 -9206B874DA4BD10A1F9A36C60DCFD9DBD89517357428A35E5C84D118F0FF978F -257E74A1BFFD78AD20D5A9D926C9C78775777A264D0F86F84392EEA7B89B8A2D -F746F900593742E7BCA92FFB3ED2D6C1AAA2D54379E1248F5BD36A962CB39C99 -4F3243FBF324151F088F9726BFE0E0209FCF3A40E1C8FDA93EB7B99A808F5FAA -F7C9EB384FF695E5C6D1A72C67C87FC856835B6772DB51DF718FAE8759D93F1D -6C03F01832AC293EC33D61977513453EE646D20B6C000910835DEC4150873CB1 -D8E9AE02F1600BD103AC960131817CBB5975A023AE47F6382AD0C072AB79D909 -0702104347828B2CDBA4B2CEBED9E9C75D1CE5BE4DB7279E82780D496131221A -4EABFB3B3F023E8AF35C55C41612EC6CC809C8706C3FB0E51C665A52F3C3831C -A4C88803723BF1F80A469F025A9FE5FDE5C1E49274ED39594C8ACF42ED187D78 -D1299251BF6D02A68BBC394555FD3D60B8E88B9E8829FB672285488EBDFA0289 -0CE47E46D5F7405F9568799C397915BEEA1F6BC3214A648E89AE1C5AD84F79AF -23DF6260BA77CA51852E895C99D482A497FAA182116D9362B27FFDFB64CF913C -E26F27C16278DBF82F33F8D7329C974728EBA9FBB6A1249895E01D4FB1AD01D6 -96DF31448E8834902F427343336692232126B8B757C3986D9080EE8324B11756 -D6E86555D53C12AB4526BB5EF59062CF0E339E914B60517B8F183D6BF20DED4E -C522E35A292E85725E2D9168BAED23FCA261967A0A04BC8B6FC92E4DF3D1705C -9ABB13E26E82C3AB8E984BCC00F5593C9C7B2FFA9ADC75099711391768041D18 -822E0A459F38573206D1F89B558BD6C09F26C8C24C543BCACBD648E2A13ED4A3 -36D734FEE81B9AAE1B0DE32A24A26C7034D917FAC9D69372CBAD44EB57C10F7A -62544F3589F3986346DE489498A8 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginRessource: ReEncodeFont -{ - 5 dict - begin - /newencoding exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /newfontdict basefontdict maxlength dict def - basefontdict { - exch dup dup /FID ne exch /Encoding ne and - { exch newfontdict 3 1 roll put } - { pop pop } - ifelse - } forall - newfontdict /FontName newfontname put - newfontdict /Encoding newencoding put - newfontname newfontdict definefont pop - end -} /ReEncodeFont exch def -%%EndRessource -%%BeginProcSet: TeXf7b6d320Encoding -/TeXf7b6d320Encoding -[ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon -/Phi /Psi /Omega /ff /fi /fl /ffi /ffl -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring -/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright -/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash -/zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G -/H /I /J /K /L /M /N /O -/P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g -/h /i /j /k /l /m /n /o -/p /q /r /s /t /u /v /w -/x /y /z /endash /emdash /hungarumlaut /tilde /dieresis -/suppress /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma -/Upsilon /Phi /Psi /.notdef /.notdef /Omega /ff /fi -/fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron -/breve /macron /ring /cedilla /germandbls /ae /oe /oslash -/AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ] def -%%EndProcSet -%%BeginProcSet: CMSS10-TeXf7b6d320Encoding -/CMSS10 /CMSS10-TeXf7b6d320Encoding TeXf7b6d320Encoding ReEncodeFont -%%EndProcSet -%%BeginFont: CMTT10 -%Included char codes: 48 49 50 51 52 53 54 55 56 57 97 98 99 100 101 102 -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 -38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF -D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 -EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 -A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 -F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 -4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA -6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E -A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B -E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F -1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 -452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF -8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 -5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA -DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 -BA304FA879392EE0BCC1AE21DBE974A618791F330A89AF49A70D4FEADC842CBB -599B7BA4910A3FC50030FBCA25C94E9F1B99B392E755F7122FA54E38B7456300 -40E2785443764DE6FC0B0215E256D63C586958C727D206D2921284C577D70E33 -9334EAF80831E27646825F503A3AABDEC09DC9FCE175E01B99D07029E5B08EF5 -ADE761B9FEE9B84098679EF62CB0CBCB1EEAB6E9391163B1D34923A19B1743CE -E654C9C39665AADA2FE6687D91EB5B8F0E20A4FD5984624C21F595F9DDF1C071 -90BFB61B710DDA6CC608A623FD4459C787EE998104B897A5ED4D622703A43F2F -B7B8A8773A3D2F509B22682AD5F3647ADA4F158E624C2437BDAC9A201B458247 -D9E20D1D973B3C476C3E97E3740DB4EAAE1AB42C20EC270CFDE0E7E46CF99B11 -7F809BB492DC132DB418AA83540291C9AE2B6A8B5867B3A0EF6D982770C7BFFB -8243221A2E8AB1CB8AC91E57B56A295916B43CB07FCC389222EE3B0B288566CB -3028FC0104354F6D81A730D638DB6573B467260E156B223C77D253D65F096AEE -CFB03CEBE0FE1999727F698454A45358D5989FFF2B0CCAEA8AB7B59DF89C12D6 -96BA9477D629F3A82D48CA829E3A31432F5D4CBC310CCC04B69F50626EABAAE9 -3F55AF5DA428E8809D05D77501E1CB6CF921713E79CF048CD64E24F517ED3260 -30FCAA6F3262DCDFCAE93B9871ABE401EDB52C881153E8228D33EFB93F057E59 -6088F7C728EA2757F36A3D1DC120CFA9978B356EF21BEECA4CFBC25409117C9B -2AF3863EB8690830ED1C93BBADE9636497C15132815AF5D72ADDC97B9FCA646B -41EDF41C2E959961E236E3DA431712371CF21E90E32F670153ADC37BE685C55C -CFE76BD5BDBEB6EE0A18C71A5DEE098C6DC39120FBB80E3DAFE9902B4A4B5FD8 -B6743E33F681EBAFE91349232E48334E88E917F0B44EBBC096CE60273B425559 -BF0D79F118AA50116B04A7660D351E70AF9398D989C796B67B1044477C54A51B -3125D01E27ADE99995D3585E25DE6FC075099C90A39CCE4DC0B8AD7A32EF59C6 -5047B1828F19C867ED2EB1EAC1887341E666769FA7DED00DFD2F4A458A964845 -7754916E005351FDC6D658F05FCD944AFC0741A99E5E2960B044F1E0C3F43CBD -8C7DB1BB5E8D72C13FBDA1E0F88506947A40598A486DBEB8C4254A4AF53851B3 -55FE2B9D2D76E34B675147BDE748222B77DE94CEA09A161BDA96D72A385A5C87 -C31FC22FA06C0375F19CB629E013949CB8AC3AA003FF89A2EDF5941CB4C95BEF -460EA45F6148263D45BE5EE1C4F29418C412F8EE9400890BB92395A1696F757B -0F3969953F30937521A69AFFCB94B600834780E15C2CBC3177B3D06545BA6D4D -39F32B744ECB3F490DE7F2FC7A0A385E98DB25D2C11F4FEA8400D4D1491929B3 -AAF41E46678B008F8F03C4CDF382846FA6588091A5043B3968257ADE285C1C79 -2A2FCCD59092F75DE8C9DDB386700A8D9F0CA54C887BD6622D792D66395D67F8 -74F9916FB4120E70F85D5FE8003DCD8BA508C1F8B77BC5067911EF545D832E53 -10879974417EFAFC101B24AE7CE9880E7A8F96448FD90B959EFF168530017197 -0DA7A7B025D0EC2E9E1767846A32C0D4839E3B167C51FC041460F085A63830F3 -9DB7CDF7906E5537CDA27C824485EE8A90FE448D6EF2D24A378FE1A5BF3076E1 -44D93A25A5E7A907A735D2CF6C4F35E0FBCB99A1551B247E0BFFC90699F78248 -9D62DD446514899156D21BC5FBCD31C0AA97CBACB0D05615C26393CE7081A25D -AD57E86BD5B934A25C207EB87C9C9DB04C3D3AAD89678189360138407142616E -6EF986F9638E3D2458270C1B8075ADB1A06BBDC101E55A4986CCDBBCCDD1551E -80F660BD5CAC1F569158244927441997A45149AA70BA94784D6A8D4579736564 -2AF02EF408BFE487451F6FB4B47D40AA90435FE8D663C5F278DCE049D317F5C4 -4117E9686CB66BA36F8601FA8AAE20E357D929BC6217187430361F278C69FB6F -202BF82A8BEE4651E53D933DD493101F799DC1C6DAA3F158FA50857FED73EC12 -58D45788F504B202B39D4217F2393666EC6B9D999891205ACD776E5E3ABDC4F3 -A83418220B39AB89AF2F38BD030BFFEE68D82DB1ED6BDBC8F47D6A2B0E869907 -8D442FF5C7B5F09134C157DCC3098A3C84FAE14A79591C4C01CE85346D228491 -F340D7A1E3A1930860076BB7CC48174A5D398105459F34E34EFDD6047407F128 -6E1CCDF911AE29F56BA14D894BFEB6F1A1958E3D6F3E7B083895549CDF382764 -103A72717419D6EB2B2FDA7254B03A30656A92F4813A8AEC4569BC1540DC5D84 -BC101E07EAC0BA31B45BECA1C53F1AA61479A38C7DA615D74F82B831BF4A5117 -81FD93EDE47F3C598BAE53ADAC58AA469AEC536FEC1E268CF9EA4BEB9B19E3E4 -4F16C154D9D6E095F172C609A772C21A4C191E31FEE670F193EF3949ADA0BAA9 -0E3A947CFC7D8A5B2E8AF8744BAE4DE7D21DC803FF360DD6BE21D1776D31762E -189F2BA4A5E4E3C60F646A4D2A841444867EF43E42D03B6A8CC5A6813E47B99F -2724CCE2EC4846D956EEE44912F70FEC4D6ADB4C09683118A3847DC37FD8FE82 -1BF521BDAB613E2EA06E118A3D0362792E6D1F8C1D1FCA661534C86D3D871A59 -EAA7A8DBFC7DA2ED913849BCE5CC9565501C44CB73C47A871ADF979551765726 -0038507E3603C9121CEFC72DF44B5A7142D6048F6B69EB8BFF74EFF67128C1D5 -A16ED6777D1D69741DB95806B949EE22D3D7A61296DB444FECC20A0359C1FA6C -E17E58C4F98C0029C9E28993FB6FD83E3102CE84172093A4A511E2483AAEDA48 -44CCEB9222C1356A05B1851A8673C1146AA656454F4421E2EE1BC31C4BDAA8E8 -2A66A5A886B92746B7C6CB3CEFAB781BE272FE4C9380DF631BD90442871FF148 -9A998087869553E33F2FB0C86C1415C63FDED1E96918C6C08FC983EAA4A1AD1F -49DE6592C616164624D5FE497A5F4A486EE50EDD0D59816B922EE4E5E0B5C84C -1D2AD403AE90C1BFA48DAFE58047C797D2AE815476DE92F02B3D608BF92A4B74 -1739D74AE8D2CEBEE5B9E0B0DD011E78ED346DADCBF3B6EBDAF22C09AB85C7A9 -39A2A2876B4C47798CAA0190DF0CE7EFBD7E5775D6BE91924AB2771D228DF55B -744B88C6D4C3DD62FE5F1EBED56E540E86CA8C9AB843953CB08D1B384C448B8E -F22DDEDB8351BBD982350CDA687296944502F5A5C59F97E5B18E260B6D34EF9B -3674E12C1ADABACE4DB1EBDC266A1764A02B91857D98FCD82A63614889E986C0 -8A7726DEFF4B2AD39C54081804C18190F666420F5D25FAE296203EFB2A2E7E7D -BCD96EEFD80106DD11D9044429BCB72585180EAE0981F8412A7405FF78FE042B -E2F1B0A0BB45743C1C2E0FDDE58453F561007C4A5E21D23F07390C7E87D70462 -4916B4F5745BC8E3642B3108C91B7688FC1D41FC65D664381B845657A6D07E52 -ECF5C0FBE73AB7E4CF41AB17316EE7EDD4D255E683E39FA42F0D2CBAC4CFAB4B -9D45D4758858E89F4F3EAB09AC1869E1EE02A4D5A6234759ADA516FD744C9D37 -FDA871ECC95461ECB117317613DB04F8237379F47A4B5B8B569C6313B161EC39 -9444D5096C6D336D7AC8F8302D7E1ECDAF0EA5F2833999E36F0DC0D70BEC0F59 -F515FD93352814685F38BD7BCEFEC4BE5861194342578916BC20CFBD9803533B -EF0FACABB3B90CCD8EF51904CBA3975CFA94ABC54369EE36ED388BB3CB1C9977 -7354AAA42E1F193D0D2D5D0F3E78C0EF2FACE3E065C54977314B8D4ED6CC8712 -5BD96CC275A035FE055B4772E843DBA853E3BC4EAE74FE201740AEE13751C30A -0D939C5E26A6DD2535592286E8A543F12A938221E1C7D65E82D1F1CFDDB06BAD -E33648D2EAB9C4A4AE2FE5537B6DBE8139528C72D7379E00571E54EE9D341989 -480CFCE388065347B06FAD8572322D299A96443AFB0E5861A9D9033632FEA912 -D7BA8A25F472E9ED89F63E310B3284659FC0A58FF45650E3F372280610C2D9E8 -E6E21968DD6EBF1E77F8F9CADDF4D5FFB650E59A5847C0D84043F9B6843F327A -2B33DE4258D26961DD07C96E42AF9F223BD158C109387EA0D6A2D1A67B9ED90E -43789C95E44A82471B1F45981F6A829D39C197D0D5D19E34C37D5B84AEEC60A5 -567C230B35F9C94B0DD978A2868D3A347DB1320B407A9014DB3B6C73FA86E4B1 -6AF2D6A6C70E7D06056738F412FCBE1DA604D54F0A617E4E16CDF050FC25AA07 -687D674AEEAB53E87F59117B5321629F534BFDA928C5A834280814764814791B -12C8009E1A9681BD263A841D68B811383A460BE436EFCFC4FD27BAB47F6696A3 -6A4738F4EC7C4288EC31C62DC402803256B4F91AF1E7512FD4C1AF97D9D3180F -B2520D63CD0708D666DE39082E3FE3BF3BF4855B -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginProcSet: TeX09fbbfacEncoding -/TeX09fbbfacEncoding -[ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon -/Phi /Psi /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring -/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/visiblespace /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright -/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash -/zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /less /equal /greater /question -/at /A /B /C /D /E /F /G -/H /I /J /K /L /M /N /O -/P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore -/quoteleft /a /b /c /d /e /f /g -/h /i /j /k /l /m /n /o -/p /q /r /s /t /u /v /w -/x /y /z /braceleft /bar /braceright /asciitilde /dieresis -/visiblespace /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma -/Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute /caron -/breve /macron /ring /cedilla /germandbls /ae /oe /oslash -/AE /OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ] def -%%EndProcSet -%%BeginProcSet: CMTT10-TeX09fbbfacEncoding -/CMTT10 /CMTT10-TeX09fbbfacEncoding TeX09fbbfacEncoding ReEncodeFont -%%EndProcSet -%%EndProlog -0.566929 setlinewidth -gsave -gsave -0 0 0 setrgbcolor -newpath -26.3465 355.165 moveto -66.046 355.165 lineto -66.046 366.084 lineto -26.3465 366.084 lineto -closepath -gsave -0.8 1 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 357.165354] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (Ethernet) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.8 0.8 setrgbcolor -newpath -186.426 345.827 moveto -249.588 335.652 322.28 309.564 327.611 359.707 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -325.892 359.071 moveto -326.57 360.252 327.223 361.505 327.85 362.834 curveto -328.346 361.451 328.771 360.103 329.127 358.788 curveto -327.611 359.707 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.8 0.8 setrgbcolor -1.133858 setlinewidth -newpath -282.465 361.835 moveto -373.38 361.835 lineto -373.38 369.923 lineto -282.465 369.923 lineto -closepath -gsave -0.8 1 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 283.464567 362.834646] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (0c) show -31.382 0 moveto (41) show -47.0731 0 moveto (9d) show -62.7641 0 moveto (4b) show -78.4551 0 moveto (a3) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 345.826772] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (dst) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 345.826772] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (00:0c:41:9d:4b:a3) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.5 0.5 setrgbcolor -newpath -185.226 335.575 moveto -287.125 323.516 415.573 272.91 421.269 359.702 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -419.586 359.008 moveto -420.213 360.239 420.824 361.514 421.42 362.834 curveto -421.932 361.479 422.402 360.146 422.828 358.833 curveto -421.269 359.702 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.5 0.5 setrgbcolor -1.133858 setlinewidth -newpath -376.008 361.835 moveto -466.924 361.835 lineto -466.924 369.923 lineto -376.008 369.923 lineto -closepath -gsave -0.8 1 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 377.007874 362.834646] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (03) show -31.382 0 moveto (47) show -47.0731 0 moveto (88) show -62.7641 0 moveto (1d) show -78.4551 0 moveto (2f) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 334.488189] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (src) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 334.488189] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (00:03:47:88:1d:2f) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.5 0.2 setrgbcolor -newpath -137.904 326.174 moveto -276.217 320.908 477.283 232.256 483.48 359.7 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -481.812 358.983 moveto -482.417 360.234 483.011 361.517 483.592 362.834 curveto -484.112 361.492 484.6 360.164 485.057 358.852 curveto -483.48 359.7 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.5 0.2 setrgbcolor -1.133858 setlinewidth -newpath -469.551 361.835 moveto -497.703 361.835 lineto -497.703 369.923 lineto -469.551 369.923 lineto -closepath -gsave -0.8 1 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 470.551181 362.834646] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (08) show -15.691 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 323.149606] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (t) show -3.32087 0 moveto (yp) show -13.3389 0 moveto (e) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 323.149606] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0x800) show -grestore -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -26.3465 304.142 moveto -39.4789 304.142 lineto -39.4789 315.06 lineto -26.3465 315.06 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 306.141732] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (IP) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 294.803150] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (version) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 294.803150] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (4L) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.8 0.5 setrgbcolor -newpath -123.763 286.892 moveto -275.415 285.053 500.626 204.779 506.832 348.361 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -505.168 347.637 moveto -505.767 348.895 506.355 350.181 506.931 351.495 curveto -507.453 350.158 507.947 348.833 508.413 347.52 curveto -506.832 348.361 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.8 0.5 setrgbcolor -1.133858 setlinewidth -newpath -500.732 350.496 moveto -513.193 350.496 lineto -513.193 358.584 lineto -500.732 358.584 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 501.732283 351.496063] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (45) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 283.464567] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (ihl) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 283.464567] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (5L) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.8 0.2 setrgbcolor -newpath -127.942 275.338 moveto -285.522 273.048 516.293 199.212 522.428 348.361 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -520.767 347.633 moveto -521.363 348.895 521.949 350.182 522.523 351.495 curveto -523.046 350.16 523.542 348.836 524.012 347.522 curveto -522.428 348.361 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.8 0.2 setrgbcolor -1.133858 setlinewidth -newpath -516.323 350.496 moveto -528.784 350.496 lineto -528.784 358.584 lineto -516.323 358.584 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 517.322835 351.496063] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 272.125984] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (tos) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 272.125984] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0x0) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.5 0.8 setrgbcolor -newpath -123.334 264.058 moveto -196.626 264.217 291 268.553 296.306 337.026 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -294.613 336.349 moveto -295.261 337.579 295.885 338.848 296.485 340.157 curveto -296.986 338.808 297.442 337.469 297.853 336.141 curveto -296.306 337.026 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.5 0.8 setrgbcolor -1.133858 setlinewidth -newpath -282.465 339.157 moveto -310.616 339.157 lineto -310.616 347.246 lineto -282.465 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 283.464567 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (38) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 260.787402] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (len) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 260.787402] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (56) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.2 0.5 setrgbcolor -newpath -118.349 252.715 moveto -205.817 252.733 322.067 254.114 327.522 337.025 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -325.839 336.332 moveto -326.471 337.574 327.083 338.848 327.674 340.157 curveto -328.182 338.814 328.65 337.48 329.081 336.155 curveto -327.522 337.025 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.2 0.5 setrgbcolor -1.133858 setlinewidth -newpath -313.646 339.157 moveto -341.797 339.157 lineto -341.797 347.246 lineto -313.646 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 314.645669 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 249.448819] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (id) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 249.448819] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 238.110236] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (\015ags) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 238.110236] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (DF) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.8 0.2 setrgbcolor -newpath -123.762 230.239 moveto -224.528 230.562 353.467 240.915 358.736 337.024 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -357.062 336.316 moveto -357.68 337.569 358.28 338.85 358.863 340.157 curveto -359.375 338.821 359.856 337.491 360.306 336.168 curveto -358.736 337.024 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.8 0.2 setrgbcolor -1.133858 setlinewidth -newpath -344.827 339.157 moveto -372.978 339.157 lineto -372.978 347.246 lineto -344.827 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 345.826772 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (40) show -15.691 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 226.771654] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (frag) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 226.771654] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0L) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.5 0.8 setrgbcolor -newpath -123.347 218.706 moveto -234.371 219.025 376.806 230.619 382.087 337.024 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -380.418 336.308 moveto -381.028 337.567 381.623 338.85 382.202 340.157 curveto -382.717 338.823 383.204 337.496 383.662 336.174 curveto -382.087 337.024 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.5 0.8 setrgbcolor -1.133858 setlinewidth -newpath -376.008 339.157 moveto -388.469 339.157 lineto -388.469 347.246 lineto -376.008 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 377.007874 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (2d) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 215.433071] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (ttl) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 215.433071] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (45) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.5 0.5 setrgbcolor -newpath -133.794 207.595 moveto -249.426 208.542 392.562 226.586 397.687 337.023 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -396.021 336.303 moveto -396.627 337.565 397.219 338.85 397.795 340.157 curveto -398.312 338.825 398.802 337.499 399.266 336.178 curveto -397.687 337.023 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.5 0.5 setrgbcolor -1.133858 setlinewidth -newpath -391.598 339.157 moveto -404.059 339.157 lineto -404.059 347.246 lineto -391.598 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 392.598425 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (11) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 204.094488] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (p) show -4.87062 0 moveto (roto) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 204.094488] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (UDP) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.8 0.8 setrgbcolor -newpath -142.138 196.105 moveto -265.717 197.563 416.076 219.144 421.134 337.023 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -419.471 336.298 moveto -420.072 337.564 420.66 338.85 421.233 340.157 curveto -421.752 338.827 422.246 337.502 422.716 336.182 curveto -421.134 337.023 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.8 0.8 setrgbcolor -1.133858 setlinewidth -newpath -407.189 339.157 moveto -435.341 339.157 lineto -435.341 347.246 lineto -407.189 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 408.188976 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (43) show -15.691 0 moveto (ac) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 192.755906] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (chksum) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 192.755906] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0x43ac) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.8 0.5 setrgbcolor -newpath -141.612 184.723 moveto -284.049 185.569 462.792 200.871 468.02 337.023 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -466.361 336.291 moveto -466.956 337.561 467.538 338.849 468.109 340.157 curveto -468.63 338.829 469.129 337.506 469.606 336.187 curveto -468.02 337.023 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.8 0.5 setrgbcolor -1.133858 setlinewidth -newpath -438.37 339.157 moveto -497.904 339.157 lineto -497.904 347.246 lineto -438.37 347.246 lineto -closepath -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 439.370079 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (01) show -15.691 0 moveto (02) show -31.382 0 moveto (03) show -47.0731 0 moveto (04) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 181.417323] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (src) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 181.417323] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (1.2.3.4) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.5 0.2 setrgbcolor -newpath -141.614 173.9 moveto -223.874 180.392 293.116 243.083 296.417 325.684 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -294.757 324.955 moveto -295.357 326.231 295.942 327.518 296.511 328.819 curveto -297.028 327.497 297.525 326.173 298.003 324.847 curveto -296.417 325.684 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.5 0.2 setrgbcolor -1.133858 setlinewidth -newpath -528.884 347.246 moveto -500.732 347.246 lineto -500.732 339.157 lineto -528.884 339.157 lineto -282.465 335.907 moveto -310.616 335.907 lineto -310.616 327.819 lineto -282.465 327.819 lineto -gsave -1 0.8 0.8 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 501.732283 340.157480] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (04) show -15.691 0 moveto (03) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 283.464567 328.818898] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (02) show -15.691 0 moveto (01) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 170.078740] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (dst) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 170.078740] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (4.3.2.1) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 158.740157] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (options) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 158.740157] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (") show -grestore -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -26.3465 139.732 moveto -50.7561 139.732 lineto -50.7561 150.651 lineto -26.3465 150.651 lineto -closepath -gsave -0.8 0.8 0.6 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 141.732283] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (UDP) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.2 0.8 setrgbcolor -newpath -142.305 133.378 moveto -240.967 140.124 324.279 215.315 327.618 314.345 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -325.963 313.607 moveto -326.554 314.888 327.132 316.179 327.696 317.48 curveto -328.217 316.161 328.722 314.839 329.209 313.516 curveto -327.618 314.345 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.2 0.8 setrgbcolor -1.133858 setlinewidth -newpath -313.646 316.48 moveto -341.797 316.48 lineto -341.797 324.569 lineto -313.646 324.569 lineto -closepath -gsave -0.8 0.8 0.6 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 314.645669 317.480315] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (01) show -15.691 0 moveto (f4) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 130.393701] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (sp) show -9.24312 0 moveto (o) show -13.9477 0 moveto (rt) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 130.393701] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (isakmp) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.8 0.5 setrgbcolor -newpath -142.305 121.94 moveto -253.638 128.006 355.151 203.616 358.801 314.345 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -357.147 313.606 moveto -357.737 314.886 358.314 316.177 358.878 317.48 curveto -359.4 316.16 359.905 314.839 360.393 313.517 curveto -358.801 314.345 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.8 0.5 setrgbcolor -1.133858 setlinewidth -newpath -344.827 316.48 moveto -372.978 316.48 lineto -372.978 324.569 lineto -344.827 324.569 lineto -closepath -gsave -0.8 0.8 0.6 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 345.826772 317.480315] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (01) show -15.691 0 moveto (f4) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 119.055118] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (dp) show -10.5715 0 moveto (o) show -15.2761 0 moveto (rt) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 119.055118] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (isakmp) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.5 0.2 setrgbcolor -newpath -123.348 111.017 moveto -253.512 112.84 385.864 186.013 389.985 314.345 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -388.332 313.605 moveto -388.92 314.885 389.496 316.176 390.06 317.48 curveto -390.583 316.159 391.089 314.839 391.578 313.518 curveto -389.985 314.345 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.5 0.2 setrgbcolor -1.133858 setlinewidth -newpath -376.008 316.48 moveto -404.16 316.48 lineto -404.16 324.569 lineto -376.008 324.569 lineto -closepath -gsave -0.8 0.8 0.6 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 377.007874 317.480315] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (24) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 107.716535] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (len) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 107.716535] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (36) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.2 0.5 0.8 setrgbcolor -newpath -143.385 100.121 moveto -279.609 105.262 417.071 180.196 421.171 314.345 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -419.519 313.603 moveto -420.104 314.883 420.679 316.176 421.242 317.48 curveto -421.766 316.16 422.274 314.839 422.765 313.52 curveto -421.171 314.345 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.2 0.5 0.8 setrgbcolor -1.133858 setlinewidth -newpath -407.189 316.48 moveto -435.341 316.48 lineto -435.341 324.569 lineto -407.189 324.569 lineto -closepath -gsave -0.8 0.8 0.6 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 408.188976 317.480315] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (bb) show -15.691 0 moveto (8d) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 96.377953] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (chksum) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 96.377953] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0xbb8d) show -grestore -grestore -grestore -gsave -0 0 0 setrgbcolor -newpath -26.3465 77.3701 moveto -67.2914 77.3701 lineto -67.2914 88.2886 lineto -26.3465 88.2886 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 79.370079] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (ISAKMP) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.2 0.5 setrgbcolor -newpath -190.325 75.5023 moveto -266.593 98.9844 295.255 201.284 296.498 291.669 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -294.862 290.903 moveto -295.425 292.203 295.981 293.504 296.53 294.804 curveto -297.061 293.496 297.587 292.184 298.109 290.866 curveto -296.498 291.669 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.2 0.5 setrgbcolor -1.133858 setlinewidth -newpath -529.286 313.23 moveto -438.37 313.23 lineto -438.37 305.142 lineto -529.286 305.142 lineto -282.465 301.891 moveto -310.616 301.891 lineto -310.616 293.803 lineto -282.465 293.803 lineto -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 439.370079 306.141732] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (9f) show -15.691 0 moveto (91) show -31.382 0 moveto (0f) show -47.0731 0 moveto (8d) show -62.7641 0 moveto (5e) show -78.4551 0 moveto (07) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 283.464567 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (ff) show -15.691 0 moveto (fd) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 68.031496] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (init.co) show -25.9582 0 moveto (okie) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 68.031496] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto ('.x9f.x91.x0f.x8d.\133...\135) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.8 0.2 setrgbcolor -newpath -201.5 63.9539 moveto -302.204 86.2243 372.148 183.455 374.721 291.668 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -373.076 290.916 moveto -373.653 292.206 374.22 293.501 374.777 294.803 curveto -375.303 293.489 375.818 292.172 376.322 290.852 curveto -374.721 291.668 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.8 0.2 setrgbcolor -1.133858 setlinewidth -newpath -313.646 293.803 moveto -435.944 293.803 lineto -435.944 301.891 lineto -313.646 301.891 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 314.645669 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (b4) show -15.691 0 moveto (cd) show -31.382 0 moveto (92) show -47.0731 0 moveto (74) show -62.7641 0 moveto (27) show -78.4551 0 moveto (74) show -94.1461 0 moveto (d1) show -109.837 0 moveto (e3) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 56.692913] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (resp.co) show -29.2515 0 moveto (okie) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 56.692913] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (".xb4.xcd.x92t't.x\133...\135) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.8 0.8 setrgbcolor -newpath -134.999 48.9543 moveto -287.679 52.925 440.452 140.782 444.517 291.667 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -442.869 290.92 moveto -443.449 292.204 444.02 293.498 444.58 294.803 curveto -445.106 293.484 445.618 292.165 446.116 290.847 curveto -444.517 291.667 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.8 0.8 setrgbcolor -1.133858 setlinewidth -newpath -438.37 293.803 moveto -450.831 293.803 lineto -450.831 301.891 lineto -438.37 301.891 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 439.370079 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 45.354331] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (next.pa) show -30.1924 0 moveto (yload) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 45.354331] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (None) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.5 0.5 setrgbcolor -newpath -132.924 37.3898 moveto -293.858 40.9624 456.014 132.582 460.112 291.667 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -458.464 290.918 moveto -459.043 292.203 459.612 293.498 460.172 294.802 curveto -460.698 293.484 461.211 292.166 461.711 290.848 curveto -460.112 291.667 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.5 0.5 setrgbcolor -1.133858 setlinewidth -newpath -453.961 293.803 moveto -466.421 293.803 lineto -466.421 301.891 lineto -453.961 301.891 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 454.960630 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (10) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 34.015748] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (version) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 34.015748] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0x10) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.8 0.8 setrgbcolor -newpath -118.367 25.9491 moveto -291.454 26.8396 471.471 120.505 475.705 291.668 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -474.059 290.918 moveto -474.636 292.203 475.204 293.499 475.763 294.803 curveto -476.29 293.485 476.804 292.168 477.305 290.851 curveto -475.705 291.668 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.8 0.8 setrgbcolor -1.133858 setlinewidth -newpath -469.551 293.803 moveto -482.012 293.803 lineto -482.012 301.891 lineto -469.551 301.891 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 470.551181 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (06) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 22.677165] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (exch.t) show -24.6852 0 moveto (yp) show -34.7033 0 moveto (e) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 22.677165] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (6) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.5 0.5 setrgbcolor -newpath -118.367 14.6102 moveto -298.974 15.4989 487.057 112.994 491.299 291.668 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -489.653 290.916 moveto -490.229 292.203 490.796 293.498 491.354 294.803 curveto -491.882 293.486 492.397 292.169 492.9 290.852 curveto -491.299 291.668 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.5 0.5 setrgbcolor -1.133858 setlinewidth -newpath -485.142 293.803 moveto -497.602 293.803 lineto -497.602 301.891 lineto -485.142 301.891 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 486.141732 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 11.338583] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (\015ags) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 11.338583] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.5 0.5 0.2 setrgbcolor -newpath -123.764 3.54079 moveto -248.215 7.47587 295.041 153.093 296.505 280.329 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -294.871 279.561 moveto -295.431 280.862 295.984 282.164 296.532 283.465 curveto -297.065 282.157 297.593 280.846 298.117 279.53 curveto -296.505 280.329 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.5 0.5 0.2 setrgbcolor -1.133858 setlinewidth -newpath -528.884 301.891 moveto -500.732 301.891 lineto -500.732 293.803 lineto -528.884 293.803 lineto -282.465 290.553 moveto -310.616 290.553 lineto -310.616 282.465 lineto -282.465 282.465 lineto -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 501.732283 294.803150] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (00) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 283.464567 283.464567] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (00) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 0.000000] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (id) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 0.000000] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (0L) show -grestore -grestore -grestore -gsave -0.400879 setlinewidth -0.8 0.2 0.8 setrgbcolor -newpath -128.746 -7.73492 moveto -265.71 -2.55779 341.194 140.937 343.364 280.329 curveto -stroke -gsave -gsave -0 setlinecap -[] 0 setdash -newpath -341.726 279.566 moveto -342.292 280.863 342.85 282.163 343.401 283.465 curveto -343.932 282.154 344.456 280.841 344.973 279.524 curveto -343.364 280.329 lineto -closepath -fill -grestore -grestore -grestore -gsave -gsave -0.8 0.2 0.8 setrgbcolor -1.133858 setlinewidth -newpath -313.646 282.465 moveto -373.179 282.465 lineto -373.179 290.553 lineto -313.646 290.553 lineto -closepath -gsave -1 0.6 1 setrgbcolor -fill -grestore -stroke -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 314.645669 283.464567] concat -gsave -/CMTT10-TeX09fbbfacEncoding 9.962640 selectfont -0 0 moveto (00) show -15.691 0 moveto (00) show -31.382 0 moveto (00) show -47.0731 0 moveto (1c) show -grestore -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 28.346457 -11.338583] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (length) show -grestore -grestore -grestore -gsave -gsave -[1.000000 0.000000 0.000000 1.000000 113.385827 -11.338583] concat -gsave -/CMSS10-TeXf7b6d320Encoding 9.962640 selectfont -0 0 moveto (28L) show -grestore -grestore -grestore -grestore -showpage -%%Trailer -%%EOF diff --git a/img/isakmp_dump.png b/img/isakmp_dump.png deleted file mode 100644 index fbdd81e..0000000 Binary files a/img/isakmp_dump.png and /dev/null differ diff --git a/img/trace3d_1.png b/img/trace3d_1.png deleted file mode 100644 index 63420fc..0000000 Binary files a/img/trace3d_1.png and /dev/null differ diff --git a/img/trace3d_2.png b/img/trace3d_2.png deleted file mode 100644 index f2a4c4d..0000000 Binary files a/img/trace3d_2.png and /dev/null differ diff --git a/index.md b/index.md index 877684d..5f94186 100644 --- a/index.md +++ b/index.md @@ -34,45 +34,21 @@ Scapy Project Scapy runs natively on Linux, and on most Unixes with libpcap and its python wrappers (see [scapy's installation page](http://scapy.readthedocs.io/en/latest/installation.html)). The same code base now runs natively on both Python 2 and Python 3. -| Scapy version | Python 2 support | Python 3 support | -| --- | --- | ---: | -| 2.4.x+ | 2.7+ | 3.4+ | -| 2.x | 2.7+ | None | -{:.mbtablestyle} - +{% raw %} +{% endraw %} -About Scapy -=========== - -### What is Scapy - -Scapy is a powerful interactive packet manipulation program. It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more. It can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.). It also performs very well at a lot of other specific tasks that most other tools can't handle, like sending invalid frames, injecting your own 802.11 frames, combining technics (VLAN hopping+ARP cache poisoning, VOIP decoding on WEP encrypted channel, ...), etc. See [interactive tutorial](http://scapy.readthedocs.io/en/latest/#interactive-tutorial) and [the quick demo: an interactive session (some examples may be outdated)](/demo/). - -### What makes scapy different from most other networking tools - -First, with most other tools, you won't build something the author did not imagine. These tools have been built for a specific goal and can't deviate much from it. For example, an ARP cache poisoning program won't let you use double 802.1q encapsulation. Or try to find a program that can send, say, an ICMP packet with padding (I said padding, not payload, see?). In fact, each time you have a new need, you have to build a new tool. - -Second, they usually confuse decoding and interpreting. Machines are good at decoding and can help human beings with that. Interpretation is reserved for human beings. Some programs try to mimic this behavior. For instance, they say "this port is open" instead of "I received a SYN-ACK". Sometimes they are right. Sometimes not. It's easier for beginners, but when you know what you're doing, you keep on trying to deduce what really happened from the program's interpretation to make your own, which is hard because you lost a big amount of information. And you often end up using tcpdump -xX to decode and interpret what the tool missed. - -Third, even programs which only decode do not give you all the information they received. The network's vision they give you is the one their author thought was sufficient. But it is not complete, and you have a bias. For instance, do you know a tool that reports the padding? - -Scapy tries to overcome those problems. It enables you to build exactly the packets you want. Even if I think stacking a 802.1q layer on top of TCP has no sense, it may have some for somebody else working on some product I don't know. Scapy has a flexible model that tries to avoid such arbitrary limits. You're free to put any value you want in any field you want and stack them like you want. You're an adult after all. - -In fact, it's like building a new tool each time, but instead of dealing with a hundred line C program, you only write 2 lines of Scapy. - -After a probe (scan, traceroute, etc.) Scapy always gives you the full decoded packets from the probe, before any interpretation. That means that you can probe once and interpret many times, ask for a traceroute and look at the padding for instance. - +{: .box-note} +## [Get started with Scapy](https://scapy.readthedocs.io/en/latest/introduction.html) ### Related projects -* [Scapytain](http://www.secdev.org/projects/scapytain/): a web application to store, organize and run test campaigns on top of Scapy -* [UTscapy](http://www.secdev.org/projects/UTscapy/): Unit Testing with scapy (integrated with Scapy 2.x) -* [WifiTap](http://sid.rstack.org/index.php/Wifitap_EN): Wi-Fi traffic injection +* [UTscapy](http://www.secdev.org/projects/UTscapy/): Unit Testing with scapy (shipped with Scapy 2.X+) +* [Scapytain](http://www.secdev.org/projects/scapytain/): a web application to store, organize and run test campaigns on top of Scapy (low project activity) ### Other @@ -89,20 +65,21 @@ base. The fork has been renamed as kamene. ### Help, documentation -#### Mailing-list -Send questions, bug reports, suggestions, ideas, cool usages of Scapy, etc. To avoid spam, you must subscribe to the mailing list to post. +### Development -* To subscribe to the mailing-list, send a mail to scapy.ml-subscribe(at)secdev.org -* To send a mail to the mailing-list: scapy.ml(at)secdev.org +Scapy development uses [Git](https://git-scm.com/) version control system. Scapy reference repository is at [https://github.com/secdev/scapy/](https://github.com/secdev/scapy/). +It provides the ticket management service used for submitting patches or bugs. +You can [report a bug](https://github.com/secdev/scapy/issues) or [create a PR](https://github.com/secdev/scapy/pulls) + +Head over to [Scapy's GitHub Projects](https://github.com/secdev/scapy/projects) to see what is being worked on. #### Documents * [**Official Online HTML documentation**](http://scapy.readthedocs.io/) -* [Security Power Tools](http://www.oreilly.com/catalog/9780596009632/) where Philippe Biondi wrote a complete chapter about Scapy. * [Scapy's installation page](http://scapy.readthedocs.io/en/latest/installation.html) * [ThePacketGeek's Building Network Tools with Scapy tutorial](https://thepacketgeek.com/series/building-network-tools-with-scapy/) -* You will also find an article in the French [Linux Magazine #52](http://www.linuxmag-france.org/produit.php?produit=107) +* [Security Power Tools](http://www.oreilly.com/catalog/9780596009632/) where Philippe Biondi wrote a complete chapter about Scapy. * [Report bugs/wishes/patches here](https://github.com/secdev/scapy/issues/new) * [Active tickets here](https://github.com/secdev/scapy/issues) @@ -115,17 +92,17 @@ Send questions, bug reports, suggestions, ideas, cool usages of Scapy, etc. To a * [Scapy's CanSecWest/core05 slides](/conf/scapy_csw05.pdf) * [Scapy's LSM 2003 slides](/conf/scapy_lsm2003.pdf) -#### Other documents on Scapy : +#### Other documents about Scapy : * [(french) @p-l- blog posts on scapy](http://pierre.droids-corp.org/blog/html/tags/scapy.html) +* You will also find an article in the French [Linux Magazine #52](http://www.linuxmag-france.org/produit.php?produit=107) -### Development - -Scapy development uses [Git](https://git-scm.com/) version control system. Scapy reference repository is at [https://github.com/secdev/scapy/](https://github.com/secdev/scapy/). It provides a ticket management service that I use to avoid forgetting patches or bugs. +#### Mailing-list (very low activity) -#### Ongoing developments +Send questions, bug reports, suggestions, ideas, cool usages of Scapy, etc. To avoid spam, you must subscribe to the mailing list to post. -Head over to [Scapy's GitHub Projects](https://github.com/secdev/scapy/projects) to see what is being worked on. +* To subscribe to the mailing-list, send a mail to scapy.ml-subscribe(at)secdev.org +* To send a mail to the mailing-list: scapy.ml(at)secdev.org #### Known bugs