के साथ पीपीपीओई टैग पार्सिंग मैं स्कैपी के साथ पीपीपीओई डिस्कवरी पैकेट को सही ढंग से विच्छेदन करने की कोशिश कर रहा हूं। यहां बताया गया है कि स्कैपी उदाहरण कैसे दिखाता है PADI पैकेट:स्कैपी
>>> p = Ether("\xff\xff\xff\xff\xff\xff\x08\x00'\xf3<5\x88c\x11\t\x00\x00\x00\x0c\x01\x01\x00\x00\x01\x03\x00\x04\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
>>> p.show()
###[ Ethernet ]###
dst= ff:ff:ff:ff:ff:ff
src= 08:00:27:f3:3c:35
type= 0x8863
###[ PPP over Ethernet Discovery ]###
version= 1L
type= 1L
code= PADI
sessionid= 0x0
len= 12
###[ Raw ]###
load= '\x01\x01\x00\x00\x01\x03\x00\x04\xe0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
मैं उस कच्चे पेलोड को पार्स करना चाहता हूं। यह पेलोड सिर्फ एक सूची पीपीपीओई टैग है। प्रत्येक टैग में दो बाइट कोड फ़ील्ड, दो बाइट लंबाई फ़ील्ड और एक मान होता है (यह निश्चित रूप से पिछले फ़ील्ड द्वारा दी गई लंबाई है)।
from scapy.all import *
class PPPoETag(Packet):
name = "PPPoE Tag"
fields_desc = [ ShortEnumField('tag_type', None,
{0x0000: 'End-Of-List',
0x0101: 'Service-Name',
0x0102: 'AC-Name',
0x0103: 'Host-Uniq',
0x0104: 'AC-Cookie',
0x0105: 'Vendor-Specific',
0x0110: 'Relay-Session-Id',
0x0201: 'Service-Name-Error',
0x0202: 'AC-System-Error',
0x0203: 'Generic-Error'}),
FieldLenField('tag_len', None, length_of='tag_value', fmt='H'),
StrLenField('tag_value', '', length_from=lambda pkt:pkt.tag_len)]
def extract_padding(self, s):
return '', s
class PPPoED_Tags(Packet):
name = "PPPoE Tag List"
fields_desc = [ PacketListField('tag_list', None, PPPoETag) ]
bind_layers(PPPoED, PPPoED_Tags, type=1)
नहीं काफी यकीन है कि अगर यह सही है और सबसे अच्छा तरीका है:
यह इस सब का प्रतिनिधित्व करने पर मेरे प्रयास है। सुधार पर कोई सलाह?
वास्तव में एक जवाब के रूप में इस प्रदान करने के बाद से यह नहीं करता है के लायक नहीं विशेष रूप से स्कैपी पर लागू नहीं होता है, लेकिन डीपीकेटी का थोड़ा अलग दृष्टिकोण है जो आपको कुछ विचार दे सकता है .. http://code.google.com/p/dpkt/source/browse/trunk/dpkt/pppoe.py – synthesizerpatel
क्या हैं आप सामान्य सलाह मांग रहे हैं या क्या आपके पास एक विशिष्ट सवाल है? – Moshe
@ मोशे: मेरा विशिष्ट सवाल यह था कि स्पीपी के साथ पीपीपीओई टैग को सही ढंग से कैसे पार्स किया जाए। लेकिन अंत में मैंने पीपीपीओई पैकेट से मैन्युअल रूप से किसी भी पुस्तकालय के बिना सभी जानकारी को पार्स करने के लिए स्विच किया है, क्योंकि यह बहुत आसान साबित हुआ है। – thor