<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Raw Socket Programming in Python on Linux &#8211; Code Examples	</title>
	<atom:link href="https://www.binarytides.com/raw-socket-programming-in-python-linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/</link>
	<description>News, Technology, Entertainment and more</description>
	<lastBuildDate>Fri, 13 Jan 2023 07:24:35 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>
		By: me		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-209367</link>

		<dc:creator><![CDATA[me]]></dc:creator>
		<pubDate>Wed, 18 Sep 2019 21:07:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-209367</guid>

					<description><![CDATA[On reading the comments, it is clear that you don&#039;t understand your code. You copied bits from different parts. And the result is incorrect code that confuses everybody.]]></description>
			<content:encoded><![CDATA[<p>On reading the comments, it is clear that you don&#8217;t understand your code. You copied bits from different parts. And the result is incorrect code that confuses everybody.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: me		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-209336</link>

		<dc:creator><![CDATA[me]]></dc:creator>
		<pubDate>Wed, 18 Sep 2019 13:53:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-209336</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-195829&quot;&gt;Visitor&lt;/a&gt;.

Thank you very much for your knowledgeable input.
What we want is to spoof the IP, so, we do need to craft the IP packet. Therefore, I think the only option left is, as you say, to use AF_PACKET instead of INET

A thing that I would have liked to see in action is useful DATA sent instead of writing &quot;Hello how are you&quot; to a web page. I suppose http get code would have been much more interesting. Anyone can do that and see what reply we get?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-195829">Visitor</a>.</p>
<p>Thank you very much for your knowledgeable input.<br />
What we want is to spoof the IP, so, we do need to craft the IP packet. Therefore, I think the only option left is, as you say, to use AF_PACKET instead of INET</p>
<p>A thing that I would have liked to see in action is useful DATA sent instead of writing &#8220;Hello how are you&#8221; to a web page. I suppose http get code would have been much more interesting. Anyone can do that and see what reply we get?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-195829</link>

		<dc:creator><![CDATA[Visitor]]></dc:creator>
		<pubDate>Sat, 04 May 2019 08:24:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-195829</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-153999&quot;&gt;kchuz23&lt;/a&gt;.

The reason for everyone&#039;s difficulty is due to the fact that the socket being used is operating at the wrong TCP/IP layer.

TCP/IP.

Application (Web/HTTP, FTP, SSH, Multiplayer games, etc...)
v
Transport (TCP, UDP, ...)
v
Network (IP, IPX, ...)
v
Link (Ethernet, 802.11 partially)

The hundreds of network protocols which make up our interconnected world can to all some degree be placed with in this stack, some of the most important are shown above. It is called a stack because each layer provides services to the one above and uses services provided by those below it.

The code on this page attempts to send data from network layer up (hence the need for creating an IP packet). However, the socket is configured as AF_INET which already provides the necessary functions for creating and sending IP packets. The result is that the code puts an IP packet with in another IP packet. Wireshark will not recognize the inner IP packet. The solution here is to either just send the TCP data or to change the socket&#039;s config.

On Linux, you should use...

s = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW)

Apart from this, the code is very helpful, thanks!!]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-153999">kchuz23</a>.</p>
<p>The reason for everyone&#8217;s difficulty is due to the fact that the socket being used is operating at the wrong TCP/IP layer.</p>
<p>TCP/IP.</p>
<p>Application (Web/HTTP, FTP, SSH, Multiplayer games, etc&#8230;)<br />
v<br />
Transport (TCP, UDP, &#8230;)<br />
v<br />
Network (IP, IPX, &#8230;)<br />
v<br />
Link (Ethernet, 802.11 partially)</p>
<p>The hundreds of network protocols which make up our interconnected world can to all some degree be placed with in this stack, some of the most important are shown above. It is called a stack because each layer provides services to the one above and uses services provided by those below it.</p>
<p>The code on this page attempts to send data from network layer up (hence the need for creating an IP packet). However, the socket is configured as AF_INET which already provides the necessary functions for creating and sending IP packets. The result is that the code puts an IP packet with in another IP packet. Wireshark will not recognize the inner IP packet. The solution here is to either just send the TCP data or to change the socket&#8217;s config.</p>
<p>On Linux, you should use&#8230;</p>
<p>s = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW)</p>
<p>Apart from this, the code is very helpful, thanks!!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: kchuz23		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-153999</link>

		<dc:creator><![CDATA[kchuz23]]></dc:creator>
		<pubDate>Tue, 06 Feb 2018 01:26:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-153999</guid>

					<description><![CDATA[How can I doing something similar to replicate an ICMP ping request?]]></description>
			<content:encoded><![CDATA[<p>How can I doing something similar to replicate an ICMP ping request?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Cosimo		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-113227</link>

		<dc:creator><![CDATA[Cosimo]]></dc:creator>
		<pubDate>Fri, 31 Mar 2017 17:26:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-113227</guid>

					<description><![CDATA[Hi, thanks for the article!

I was just wondering is you can suggest or point me to an example which uses python classes to achieve the same objective.
I&#039;ve seen a lot of sniffers take advantage of classes, but no example of sending packets. 
Thank you!
Cosimo]]></description>
			<content:encoded><![CDATA[<p>Hi, thanks for the article!</p>
<p>I was just wondering is you can suggest or point me to an example which uses python classes to achieve the same objective.<br />
I&#8217;ve seen a lot of sniffers take advantage of classes, but no example of sending packets.<br />
Thank you!<br />
Cosimo</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jhon		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-82892</link>

		<dc:creator><![CDATA[Jhon]]></dc:creator>
		<pubDate>Wed, 08 Jun 2016 17:43:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-82892</guid>

					<description><![CDATA[The spoofed ip dosnt show up on wireshark.]]></description>
			<content:encoded><![CDATA[<p>The spoofed ip dosnt show up on wireshark.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-73063</link>

		<dc:creator><![CDATA[visitor]]></dc:creator>
		<pubDate>Wed, 06 Apr 2016 20:56:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-73063</guid>

					<description><![CDATA[You really need a better comment posting mechanism
that allows your visitors to easily post python code
without destroying the indentation.

I&#039;m really really disgusted, and i would not trust your
code with a monkey I did not like.]]></description>
			<content:encoded><![CDATA[<p>You really need a better comment posting mechanism<br />
that allows your visitors to easily post python code<br />
without destroying the indentation.</p>
<p>I&#8217;m really really disgusted, and i would not trust your<br />
code with a monkey I did not like.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-73062</link>

		<dc:creator><![CDATA[visitor]]></dc:creator>
		<pubDate>Wed, 06 Apr 2016 20:54:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-73062</guid>

					<description><![CDATA[Last try:  code tag and a line start marker to try to preserve spaces:

&lt;code&gt;
! def checksum(msg):
!    vals=map(ord,msg)
!    if ((len(vals)&#062;&#062;1)&#060;&#060;1) != len(vals): vals.append(0) # odd length
!    s=sum([vals[i]+(vals[i+1]&#060; 0xffff: s=(s&#062;&#062;16)+(s &#038; 0xffff)
!    return s ^ 0xffff # ones complement
&lt;/code&gt;]]></description>
			<content:encoded><![CDATA[<p>Last try:  code tag and a line start marker to try to preserve spaces:</p>
<p><code><br />
! def checksum(msg):<br />
!    vals=map(ord,msg)<br />
!    if ((len(vals)&gt;&gt;1)&lt;&lt;1) != len(vals): vals.append(0) # odd length<br />
!    s=sum([vals[i]+(vals[i+1]&lt; 0xffff: s=(s&gt;&gt;16)+(s &amp; 0xffff)<br />
!    return s ^ 0xffff # ones complement<br />
</code></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-73060</link>

		<dc:creator><![CDATA[visitor]]></dc:creator>
		<pubDate>Wed, 06 Apr 2016 20:51:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-73060</guid>

					<description><![CDATA[OK, let&#039;s try the code tag.

&lt;code&gt;
def checksum(msg):
   vals=map(ord,msg)
   if ((len(vals)&#062;&#062;1)&#060;&#060;1) != len(vals): vals.append(0) # odd length
   s=sum([vals[i]+(vals[i+1]&#060; 0xffff: s=(s&#062;&#062;16)+(s &#038; 0xffff)
   return s ^ 0xffff # ones complement
&lt;/code&gt;]]></description>
			<content:encoded><![CDATA[<p>OK, let&#8217;s try the code tag.</p>
<p><code><br />
def checksum(msg):<br />
   vals=map(ord,msg)<br />
   if ((len(vals)&gt;&gt;1)&lt;&lt;1) != len(vals): vals.append(0) # odd length<br />
   s=sum([vals[i]+(vals[i+1]&lt; 0xffff: s=(s&gt;&gt;16)+(s &amp; 0xffff)<br />
   return s ^ 0xffff # ones complement<br />
</code></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-73059</link>

		<dc:creator><![CDATA[visitor]]></dc:creator>
		<pubDate>Wed, 06 Apr 2016 20:48:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-73059</guid>

					<description><![CDATA[Fix indentation and code mangling by your crappy posting system:
&lt;blockquote&gt;
&#062; def checksum(msg):
&#062;    vals=map(ord,msg)
&#062;    if ((len(vals)&#062;&#062;1)&#060;    s=sum([vals[i]+(vals[i+1]&#060;    while s &#062; 0xffff: s=(s&#062;&#062;16)+(s &#038; 0xffff)
&#062;    return s ^ 0xffff # ones complement
&lt;/blockquote&gt;]]></description>
			<content:encoded><![CDATA[<p>Fix indentation and code mangling by your crappy posting system:</p>
<blockquote><p>
&gt; def checksum(msg):<br />
&gt;    vals=map(ord,msg)<br />
&gt;    if ((len(vals)&gt;&gt;1)&lt;    s=sum([vals[i]+(vals[i+1]&lt;    while s &gt; 0xffff: s=(s&gt;&gt;16)+(s &amp; 0xffff)<br />
&gt;    return s ^ 0xffff # ones complement
</p></blockquote>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: visitor		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-73058</link>

		<dc:creator><![CDATA[visitor]]></dc:creator>
		<pubDate>Wed, 06 Apr 2016 20:38:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-73058</guid>

					<description><![CDATA[Simplified, clarified, hardened, and corrected(?) checksum function:

def checksum(msg):
  vals=map(ord,msg)
  if ((len(vals)&#062;&#062;1)&#060;&#060;1) != len(vals): vals.append(0) # odd length
  s=sum([vals[i]+(vals[i+1]&#060; 0xffff: s=(s&#062;&#062;16)+(s &#038; 0xffff)
  return s ^ 0xffff # unsigned ones complement

This assumes the proper checksum is defined as a 16 bit sum reduction
followed by a bitwise  complement.  The original code is buggy.

1)  It fails to prevent an indexing error for odd length messages.
2)  It fails to consistently compute the checksum for very long messages.
3)  Its &#039;ones complement&#039; is an integer signed ones complement, not an unsigned binary complement.

If the rest of the code is as bad, user beware.  One useful thing I did learn
was the necessity of administrator privilege for creating this socket.]]></description>
			<content:encoded><![CDATA[<p>Simplified, clarified, hardened, and corrected(?) checksum function:</p>
<p>def checksum(msg):<br />
  vals=map(ord,msg)<br />
  if ((len(vals)&gt;&gt;1)&lt;&lt;1) != len(vals): vals.append(0) # odd length<br />
  s=sum([vals[i]+(vals[i+1]&lt; 0xffff: s=(s&gt;&gt;16)+(s &amp; 0xffff)<br />
  return s ^ 0xffff # unsigned ones complement</p>
<p>This assumes the proper checksum is defined as a 16 bit sum reduction<br />
followed by a bitwise  complement.  The original code is buggy.</p>
<p>1)  It fails to prevent an indexing error for odd length messages.<br />
2)  It fails to consistently compute the checksum for very long messages.<br />
3)  Its &#8216;ones complement&#8217; is an integer signed ones complement, not an unsigned binary complement.</p>
<p>If the rest of the code is as bad, user beware.  One useful thing I did learn<br />
was the necessity of administrator privilege for creating this socket.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jeff		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-69128</link>

		<dc:creator><![CDATA[jeff]]></dc:creator>
		<pubDate>Tue, 01 Mar 2016 08:55:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-69128</guid>

					<description><![CDATA[I don&#039;t understand your TCP checksum function, at the end, you can simplify it with only ;

s = s + (s &#062;&#062; 16) # add the carry to the result
s = ~s &#038; 0xffff # one complement and mask to 4 byte short

This line isn&#039;t useful : s = (s&#062;&#062;16) + (s &#038; 0xffff)]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t understand your TCP checksum function, at the end, you can simplify it with only ;</p>
<p>s = s + (s &gt;&gt; 16) # add the carry to the result<br />
s = ~s &amp; 0xffff # one complement and mask to 4 byte short</p>
<p>This line isn&#8217;t useful : s = (s&gt;&gt;16) + (s &amp; 0xffff)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: mat		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-67726</link>

		<dc:creator><![CDATA[mat]]></dc:creator>
		<pubDate>Fri, 09 Jan 2015 12:11:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-67726</guid>

					<description><![CDATA[why do you compute the checksum yourself when in your comments you state that the kernel does this for us?]]></description>
			<content:encoded><![CDATA[<p>why do you compute the checksum yourself when in your comments you state that the kernel does this for us?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: aaron		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-67574</link>

		<dc:creator><![CDATA[aaron]]></dc:creator>
		<pubDate>Sat, 08 Nov 2014 22:45:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-67574</guid>

					<description><![CDATA[I am trying to captures these packets in wireshark after running the above code by putting the filet ip.src == 192.168.1.101. But I don&#039;t see any packets. I changed the destination address in the above code to my PC IP address.]]></description>
			<content:encoded><![CDATA[<p>I am trying to captures these packets in wireshark after running the above code by putting the filet ip.src == 192.168.1.101. But I don&#8217;t see any packets. I changed the destination address in the above code to my PC IP address.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Aaron		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-67572</link>

		<dc:creator><![CDATA[Aaron]]></dc:creator>
		<pubDate>Sat, 08 Nov 2014 21:58:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-67572</guid>

					<description><![CDATA[I executed this code. I changed the destination IP to my system IP.  I&#039;m trying to capture packets in wireshark by filtering ip.src ==192.168.1.101 but I&#039;m not receiving any packets.]]></description>
			<content:encoded><![CDATA[<p>I executed this code. I changed the destination IP to my system IP.  I&#8217;m trying to capture packets in wireshark by filtering ip.src ==192.168.1.101 but I&#8217;m not receiving any packets.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: aaron		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-67524</link>

		<dc:creator><![CDATA[aaron]]></dc:creator>
		<pubDate>Mon, 20 Oct 2014 20:17:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-67524</guid>

					<description><![CDATA[Is it possible to send ICMP using the same socket? OR do we need to replace IPPROTO_RAW with IPPROTO_ICMP_TCP? Also is it the same way we receive the raw socket?]]></description>
			<content:encoded><![CDATA[<p>Is it possible to send ICMP using the same socket? OR do we need to replace IPPROTO_RAW with IPPROTO_ICMP_TCP? Also is it the same way we receive the raw socket?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Patrick Leedom		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65515</link>

		<dc:creator><![CDATA[Patrick Leedom]]></dc:creator>
		<pubDate>Wed, 05 Jun 2013 04:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-65515</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65514&quot;&gt;Silver Moon&lt;/a&gt;.

I was sending it to loopback and the kernel doesnt add a mac since it doesnt go through a nic. My mistake.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65514">Silver Moon</a>.</p>
<p>I was sending it to loopback and the kernel doesnt add a mac since it doesnt go through a nic. My mistake.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Silver Moon		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65514</link>

		<dc:creator><![CDATA[Silver Moon]]></dc:creator>
		<pubDate>Wed, 05 Jun 2013 02:02:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-65514</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65513&quot;&gt;Patrick Leedom&lt;/a&gt;.

where is the mac address missing ? In the packets send out by the python program ?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65513">Patrick Leedom</a>.</p>
<p>where is the mac address missing ? In the packets send out by the python program ?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Patrick Leedom		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65513</link>

		<dc:creator><![CDATA[Patrick Leedom]]></dc:creator>
		<pubDate>Tue, 04 Jun 2013 16:08:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-65513</guid>

					<description><![CDATA[Why does the Ethernet frame not have any MAC addresses? I thought the kernel handled all of the ethernet headers.]]></description>
			<content:encoded><![CDATA[<p>Why does the Ethernet frame not have any MAC addresses? I thought the kernel handled all of the ethernet headers.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: holia		</title>
		<link>https://www.binarytides.com/raw-socket-programming-in-python-linux/comment-page-1/#comment-65081</link>

		<dc:creator><![CDATA[holia]]></dc:creator>
		<pubDate>Fri, 26 Apr 2013 15:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.binarytides.com/?p=3119#comment-65081</guid>

					<description><![CDATA[What is the rule of ! in pact like BBH4S ? How could we define one ? thanks .]]></description>
			<content:encoded><![CDATA[<p>What is the rule of ! in pact like BBH4S ? How could we define one ? thanks .</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
