2011-05-24 13 views
6

संभव डुप्लिकेट:
How to calculate a packet checksum without sending it?आईपी चेकसम को स्कैपी के साथ कैसे पुन: गणना करें?

मैं एक स्रोत आईपी और एक पर कब्जा कर लिया पैकेट में मैक पता जाली है, लेकिन अब मैं चेकसम पुनर्गणना के लिए इतना है कि यह एक बार बाहर की जाँच करता है की जरूरत है अपने प्राप्त किया गया (पाठ्यक्रम के नेटवर्क में इंजेक्शन के बाद)। मैं वास्तव में चेकसम को स्वयं लागू नहीं करना चाहता था, और मैं सोच रहा था कि scapy मेरे लिए यह कर सकता है। मैंने पढ़ा है कि show2() फ़ंक्शन को चेकसम को फिर से समझना चाहिए, लेकिन मुझे इसे काम करने के लिए प्रतीत नहीं होता है।

तो, मैं कैप्चर + स्पूफेड पैकेट के लिए चेकसम को पुन: गणना (और प्रतिस्थापित) करने के लिए scapy का उपयोग कैसे कर सकता हूं?

धन्यवाद!

+0

इसके अलावा, यदि पाइथन पुस्तकालय का उपयोग करने में कोई और आसान है जो इस स्थिति में अच्छी तरह से काम करेगा - मैं सभी कान (आंखें) हूं। –

उत्तर

7

shown here रूप में, आप से scapy

+1

मैंने इस जवाब का चयन किया क्योंकि कुंजी यह थी कि मुझे चक्सम फ़ील्ड 'del' करना था। पहले मैं चेकसम क्षेत्र में नल बाइट्स के साथ मैन्युअल रूप से पैकेट का पुनर्निर्माण कर रहा था। ऐसा करने और फिर 'show2()' को कॉल करने से चेकसम का पुनर्मूल्यांकन नहीं हुआ। पहले 'डेल' के साथ फ़ील्ड को हटाने से सही व्यवहार मिलता है। –

3

show2() विधि बुला के तर्क की खातिर का कहना है कि हम एक आईपी हैडर प्रसंस्करण और अगले हॉप के बाद चेकसम पुनर्गणना के लिए चाहते हैं कर रहे हैं इससे पहले कि .chksum विशेषता को हटाना होगा:

>>> iph = IP(import_hexcap()) 
0000 4500 0064 000f 0000 fe01 3726 c0a8 0108 
0010 c0a8 030b 
>>> iph.ttl = iph.ttl - 1 
>>> del iph.chksum 
>>> iph.show2() 
###[ IP ]### 
version= 4L 
ihl= 5L 
tos= 0x0 
len= 100 
id= 15 
flags= 
frag= 0L 
ttl= 253 
proto= icmp 
chksum= 0x3826 
src= 192.168.1.8 
dst= 192.168.3.11 
options= 

.chksum फ़ील्ड का आपका उत्तर है।

संबंधित मुद्दे