2010-04-16 6 views
9

Zgodnie z definicją (patrz: http://www.freesoft.org/CIE/Course/Section4/8.htm) nagłówek TCP ma pole "Opcje". Istnieje już kilka opcji już zdefiniowanych (patrz: www.iana.org/assignments/tcp-parameters/), ale chcę wymyślić własną. (Do eksperymentów/badań.)Jak napisać niestandardowe dane do pola opcji nagłówka pakietów TCP za pomocą Java?

Jak mogę napisać Java (a następnie odczytać) niektóre niestandardowe dane do pola opcji?

Dodatkowe pytanie: jeśli nie można tego zrobić w Javie. jaki rodzaj aplikacji może to zrobić? (Nie, nie mam ochoty mieszać się do implementacji stosu TCP/IP na poziomie jądra, chcę zachować poziom aplikacji).

Dzięki!

+0

Jaki system operacyjny jest to przede wszystkim wymagane do uruchomienia na? –

+0

cóż, najlepszy byłby niezależny od systemu operacyjnego. inaczej: Linux (RHEL/CentOS) byłby podstawowym – Matlabber

Odpowiedz

8

JNetPcap to biblioteka, która umożliwia zmianę nagłówków z warstw niskiego poziomu, w tym TCP. http://jnetpcap.com/node/29

Oto krótki przykład:

byte[] pktBytes = FormatUtils.toByteArray("0015c672234c90e6ba92661608004500002d358c4000800600000a000b050a090028c26e270fb8b256e3a2009f785018faf01f550000746573740a"); 
JMemoryPacket packet = new JMemoryPacket(pktBytes); 

packet.scan(Ethernet.ID); //Need to be done before doing any edits 

//Editing Ip layer 
Ip4 ip = packet.getHeader(new Ip4()); 
ip.source(new byte[] {2,6,0,0}); //Source Ip 2.6.0.0 
ip.destination(new byte[] {1,2,3,4}); //Dest Ip 1.2.3.4 

//Editing Tcp layer 
Tcp tcp = packet.getHeader(new Tcp()); 
tcp.destination(5555); //Port destination 5555 

if (pcap.sendPacket(packet) != Pcap.OK) { 
    System.err.println(pcap.getErr()); 
} 
+5

hmm ... Modyfikowanie pakietów TCP ... złośliwych złośliwych – 100rabh

+0

Czy to jest hakerów ćwierćfinałowych, które tam widzę? Miło, jeśli tak. – braden

+0

@braden tak jest. – h3xStream

Powiązane problemy