2012-11-02 2 views
4

J'ai une douille de renvoi. J'essaie de changer le port sur les paquets comme je les vois. Quand je fais cela - ai-je besoin de recalculer la somme de contrôle TCP, et la somme de contrôle IP? J'essaie de faire cela, mais je vois des paquets de réinitialisation dans tcpdump. Je ne sais pas si c'est parce que je calcule la somme de contrôle tcp mal, ou si c'est quelque chose d'autre qui se passe.Calcul de la somme de contrôle TCP pour la douille de renvoi

J'ai utilisé les méthodes CKSUM de ce site:

http://www.enderunix.org/docs/en/rawipspoof/

Je pensais à l'aide d'une prise de renvoi, si je change une chose, il devrait être assez simple, mais ne marche pas semblent être. Y at-il une calculatrice de checksum TCP là-bas que je peux utiliser pour vérifier que je reçois la bonne valeur?

Répondre

0

Voir la section 3.3 de RFC 1631 pour les ajustements de somme de contrôle qu'un NAT/PAT doit effectuer. Vous n'avez pas besoin de parcourir le paquet entier, il vous suffit d'ajuster la somme de contrôle en fonction des octets que vous modifiez.

+0

Intéressant. Dans leur fonction C, savez-vous précisément à quoi se réfèrent le vieux pointeur args et le nouveau pointeur? Ai-je juste besoin de créer deux variables qui contiennent les anciennes et nouvelles données? – Derek

+0

'optr' indique ce que vous supprimez de l'ancien paquet et nptr pointe sur ce que vous insérez dans le nouveau paquet. Donc, si vous changez simplement le numéro de port, optr pointe vers le port d'origine, nptr pointe vers le port de remplacement. Vous pouvez utiliser deux variables, ou vous pouvez pointer vers l'emplacement dans le paquet. – Barmar

+0

Ah ok - c'est logique. Je n'étais pas sûr si j'avais besoin d'avoir une copie entière de l'ancien paquet et du paquet. – Derek

Questions connexes