2011-05-24 28 views
6

Olası Çoğalt:
How to calculate a packet checksum without sending it?IP sağlama toplamı scapy ile nasıl yeniden hesaplanır?

Ben yakalanan pakette bir kaynak IP ve MAC adresi sahte ettik ama şimdi bir kez kontrol eder, böylece sağlama yeniden hesaplamak gerekir onun Alındı ​​(tabii ki ağa enjekte edildikten sonra). Ben sağlama toplamını kendim uygulamak istemedim ve bunun benim için scapy bunu yapabileceğini düşünüyordum. show2() işlevinin sağlama toplamını yeniden hesaplamasını okudum, ancak çalışmasını sağlayamıyorum.

scapy, yakalanan + sahte bir paket için sağlama toplamını yeniden hesaplamak (ve değiştirmek) için nasıl kullanabilirim?

Teşekkürler!

+0

Ayrıca, bu durumda güzel çalışacak başka bir kullanımı kolay Python kitaplığı varsa - Ben tüm kulaklarım (gözler). –

cevap

7

shown here olarak, en biz bir IP başlık işleme ve sonraki hop sonra sağlama yeniden hesaplamak istediğiniz olduğunuzu tartışma adına diyelim scapy

+1

Bu cevabı seçtim çünkü anahtar chkum alanını delmek zorunda kalmamdı. Önceden, paketi sağlama alanında boş bayt ile el ile yeniden oluşturuyordum. Bunu yapmak ve sonra show2() 'yi çağırmak sağlama toplamını yeniden hesaplamıyordu. Önce alanı "del" ile silmek doğru davranışı sağlar. –

3

den show2() yöntemini çağırmadan önce .chksum özelliği silmek zorunda:

>>> 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 alanı yanıtınıza sahiptir.

İlgili konular