- <title>Isenkram, Appstream and udev make life as a LEGO builder easier</title>
- <link>http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</link>
- <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Isenkram__Appstream_and_udev_make_life_as_a_LEGO_builder_easier.html</guid>
- <pubDate>Fri, 7 Oct 2016 09:50:00 +0200</pubDate>
- <description><p><a href="http://packages.qa.debian.org/isenkram">The Isenkram
-system</a> provide a practical and easy way to figure out which
-packages support the hardware in a given machine. The command line
-tool <tt>isenkram-lookup</tt> and the tasksel options provide a
-convenient way to list and install packages relevant for the current
-hardware during system installation, both user space packages and
-firmware packages. The GUI background daemon on the other hand provide
-a pop-up proposing to install packages when a new dongle is inserted
-while using the computer. For example, if you plug in a smart card
-reader, the system will ask if you want to install <tt>pcscd</tt> if
-that package isn't already installed, and if you plug in a USB video
-camera the system will ask if you want to install <tt>cheese</tt> if
-cheese is currently missing. This already work just fine.</p>
-
-<p>But Isenkram depend on a database mapping from hardware IDs to
-package names. When I started no such database existed in Debian, so
-I made my own data set and included it with the isenkram package and
-made isenkram fetch the latest version of this database from git using
-http. This way the isenkram users would get updated package proposals
-as soon as I learned more about hardware related packages.</p>
-
-<p>The hardware is identified using modalias strings. The modalias
-design is from the Linux kernel where most hardware descriptors are
-made available as a strings that can be matched using filename style
-globbing. It handle USB, PCI, DMI and a lot of other hardware related
-identifiers.</p>
-
-<p>The downside to the Isenkram specific database is that there is no
-information about relevant distribution / Debian version, making
-isenkram propose obsolete packages too. But along came AppStream, a
-cross distribution mechanism to store and collect metadata about
-software packages. When I heard about the proposal, I contacted the
-people involved and suggested to add a hardware matching rule using
-modalias strings in the specification, to be able to use AppStream for
-mapping hardware to packages. This idea was accepted and AppStream is
-now a great way for a package to announce the hardware it support in a
-distribution neutral way. I wrote
-<a href="http://people.skolelinux.org/pere/blog/Using_appstream_with_isenkram_to_install_hardware_related_packages_in_Debian.html">a
-recipe on how to add such meta-information</a> in a blog post last
-December. If you have a hardware related package in Debian, please
-announce the relevant hardware IDs using AppStream.</p>
-
-<p>In Debian, almost all packages that can talk to a LEGO Mindestorms
-RCX or NXT unit, announce this support using AppStream. The effect is
-that when you insert such LEGO robot controller into your Debian
-machine, Isenkram will propose to install the packages needed to get
-it working. The intention is that this should allow the local user to
-start programming his robot controller right away without having to
-guess what packages to use or which permissions to fix.</p>
-
-<p>But when I sat down with my son the other day to program our NXT
-unit using his Debian Stretch computer, I discovered something
-annoying. The local console user (ie my son) did not get access to
-the USB device for programming the unit. This used to work, but no
-longer in Jessie and Stretch. After some investigation and asking
-around on #debian-devel, I discovered that this was because udev had
-changed the mechanism used to grant access to local devices. The
-ConsoleKit mechanism from <tt>/lib/udev/rules.d/70-udev-acl.rules</tt>
-no longer applied, because LDAP users no longer was added to the
-plugdev group during login. Michael Biebl told me that this method
-was obsolete and the new method used ACLs instead. This was good
-news, as the plugdev mechanism is a mess when using a remote user
-directory like LDAP. Using ACLs would make sure a user lost device
-access when she logged out, even if the user left behind a background
-process which would retain the plugdev membership with the ConsoleKit
-setup. Armed with this knowledge I moved on to fix the access problem
-for the LEGO Mindstorms related packages.</p>
-
-<p>The new system uses a udev tag, 'uaccess'. It can either be
-applied directly for a device, or is applied in
-/lib/udev/rules.d/70-uaccess.rules for classes of devices. As the
-LEGO Mindstorms udev rules did not have a class, I decided to add the
-tag directly in the udev rules files included in the packages. Here
-is one example. For the nqc C compiler for the RCX, the
-<tt>/lib/udev/rules.d/60-nqc.rules</tt> file now look like this:
-
-<p><pre>
-SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0694", ATTR{idProduct}=="0001", \
- SYMLINK+="rcx-%k", TAG+="uaccess"
-</pre></p>
-
-<p>The key part is the 'TAG+="uaccess"' at the end. I suspect all
-packages using plugdev in their /lib/udev/rules.d/ files should be
-changed to use this tag (either directly or indirectly via
-<tt>70-uaccess.rules</tt>). Perhaps a lintian check should be created
-to detect this?</p>
-
-<p>I've been unable to find good documentation on the uaccess feature.
-It is unclear to me if the uaccess tag is an internal implementation
-detail like the udev-acl tag used by
-<tt>/lib/udev/rules.d/70-udev-acl.rules</tt>. If it is, I guess the
-indirect method is the preferred way. Michael
-<a href="https://github.com/systemd/systemd/issues/4288">asked for more
-documentation from the systemd project</a> and I hope it will make
-this clearer. For now I use the generic classes when they exist and
-is already handled by <tt>70-uaccess.rules</tt>, and add the tag
-directly if no such class exist.</p>
-
-<p>To learn more about the isenkram system, please check out
-<a href="http://people.skolelinux.org/pere/blog/tags/isenkram/">my
-blog posts tagged isenkram</a>.</p>
-
-<p>To help out making life for LEGO constructors in Debian easier,
-please join us on our IRC channel
-<a href="irc://irc.debian.org/%23debian-lego">#debian-lego</a> and join
-the <a href="https://alioth.debian.org/projects/debian-lego/">Debian
-LEGO team</a> in the Alioth project we created yesterday. A mailing
-list is not yet created, but we are working on it. :)</p>
-
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&label=PetterReinholdtsenBlog">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>Aftenposten-redaktøren med lua i hånda</title>
- <link>http://people.skolelinux.org/pere/blog/Aftenposten_redakt_ren_med_lua_i_h_nda.html</link>
- <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Aftenposten_redakt_ren_med_lua_i_h_nda.html</guid>
- <pubDate>Fri, 9 Sep 2016 11:30:00 +0200</pubDate>
- <description><p>En av dagens nyheter er at Aftenpostens redaktør Espen Egil Hansen
-bruker
-<a href="https://www.nrk.no/kultur/aftenposten-brukar-heile-forsida-pa-facebook-kritikk-1.13126918">forsiden
-av papiravisen på et åpent brev til Facebooks sjef Mark Zuckerberg om
-Facebooks fjerning av bilder, tekster og sider de ikke liker</a>. Det
-må være uvant for redaktøren i avisen Aftenposten å stå med lua i
-handa og håpe på å bli hørt. Spesielt siden Aftenposten har vært med
-på å gi Facebook makten de nå demonstrerer at de har. Ved å melde seg
-inn i Facebook-samfunnet har de sagt ja til bruksvilkårene og inngått
-en antagelig bindende avtale. Kanskje de skulle lest og vurdert
-vilkårene litt nærmere før de sa ja, i stedet for å klage over at
-reglende de har valgt å akseptere blir fulgt? Personlig synes jeg
-vilkårene er uakseptable og det ville ikke falle meg inn å gå inn på
-en avtale med slike vilkår. I tillegg til uakseptable vilkår er det
-mange andre grunner til å unngå Facebook. Du kan finne en solid
-gjennomgang av flere slike argumenter hos
-<a href="https://stallman.org/facebook.html">Richard Stallmans side om
-Facebook</a>.
-
-<p>Jeg håper flere norske redaktører på samme vis må stå med lua i
-hånden inntil de forstår at de selv er med på å føre samfunnet på
-ville veier ved å omfavne Facebook slik de gjør når de omtaler og
-løfter frem saker fra Facebook, og tar i bruk Facebook som
-distribusjonskanal for sine nyheter. De bidrar til
-overvåkningssamfunnet og raderer ut lesernes privatsfære når de lenker
-til Facebook på sine sider, og låser seg selv inne i en omgivelse der
-det er Facebook, og ikke redaktøren, som sitter med makta.</p>
-
-<p>Men det vil nok ta tid, i et Norge der de fleste nettredaktører
-<a href="http://people.skolelinux.org/pere/blog/Snurpenot_overv_kning_av_sensitiv_personinformasjon.html">deler
-sine leseres personopplysinger med utenlands etterretning</a>.</p>
-
-<p>For øvrig burde varsleren Edward Snowden få politisk asyl i
-Norge.</p>
+ <title>Simpler recipe on how to make a simple $7 IMSI Catcher using Debian</title>
+ <link>http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</link>
+ <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Simpler_recipe_on_how_to_make_a_simple__7_IMSI_Catcher_using_Debian.html</guid>
+ <pubDate>Wed, 9 Aug 2017 23:59:00 +0200</pubDate>
+ <description><p>On friday, I came across an interesting article in the Norwegian
+web based ICT news magazine digi.no on
+<a href="https://www.digi.no/artikler/sikkerhetsforsker-lagde-enkel-imsi-catcher-for-60-kroner-na-kan-mobiler-kartlegges-av-alle/398588">how
+to collect the IMSI numbers of nearby cell phones</a> using the cheap
+DVB-T software defined radios. The article refered to instructions
+and <a href="https://www.youtube.com/watch?v=UjwgNd_as30">a recipe by
+Keld Norman on Youtube on how to make a simple $7 IMSI Catcher</a>, and I decided to test them out.</p>
+
+<p>The instructions said to use Ubuntu, install pip using apt (to
+bypass apt), use pip to install pybombs (to bypass both apt and pip),
+and the ask pybombs to fetch and build everything you need from
+scratch. I wanted to see if I could do the same on the most recent
+Debian packages, but this did not work because pybombs tried to build
+stuff that no longer build with the most recent openssl library or
+some other version skew problem. While trying to get this recipe
+working, I learned that the apt->pip->pybombs route was a long detour,
+and the only piece of software dependency missing in Debian was the
+gr-gsm package. I also found out that the lead upstream developer of
+gr-gsm (the name stand for GNU Radio GSM) project already had a set of
+Debian packages provided in an Ubuntu PPA repository. All I needed to
+do was to dget the Debian source package and built it.</p>
+
+<p>The IMSI collector is a python script listening for packages on the
+loopback network device and printing to the terminal some specific GSM
+packages with IMSI numbers in them. The code is fairly short and easy
+to understand. The reason this work is because gr-gsm include a tool
+to read GSM data from a software defined radio like a DVB-T USB stick
+and other software defined radios, decode them and inject them into a
+network device on your Linux machine (using the loopback device by
+default). This proved to work just fine, and I've been testing the
+collector for a few days now.</p>
+
+<p>The updated and simpler recipe is thus to</p>
+
+<ol>
+
+<li>start with a Debian machine running Stretch or newer,</li>
+
+<li>build and install the gr-gsm package available from
+<a href="http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/">http://ppa.launchpad.net/ptrkrysik/gr-gsm/ubuntu/pool/main/g/gr-gsm/</a>,</li>
+
+<li>clone the git repostory from <a href="https://github.com/Oros42/IMSI-catcher">https://github.com/Oros42/IMSI-catcher</a>,</li>
+
+<li>run grgsm_livemon and adjust the frequency until the terminal
+where it was started is filled with a stream of text (meaning you
+found a GSM station).</li>
+
+<li>go into the IMSI-catcher directory and run 'sudo python simple_IMSI-catcher.py' to extract the IMSI numbers.</li>
+
+</ol>
+
+<p>To make it even easier in the future to get this sniffer up and
+running, I decided to package
+<a href="https://github.com/ptrkrysik/gr-gsm/">the gr-gsm project</a>
+for Debian (<a href="https://bugs.debian.org/871055">WNPP
+#871055</a>), and the package was uploaded into the NEW queue today.
+Luckily the gnuradio maintainer has promised to help me, as I do not
+know much about gnuradio stuff yet.</p>
+
+<p>I doubt this "IMSI cacher" is anywhere near as powerfull as
+commercial tools like
+<a href="https://www.thespyphone.com/portable-imsi-imei-catcher/">The
+Spy Phone Portable IMSI / IMEI Catcher</a> or the
+<a href="https://en.wikipedia.org/wiki/Stingray_phone_tracker">Harris
+Stingray</a>, but I hope the existance of cheap alternatives can make
+more people realise how their whereabouts when carrying a cell phone
+is easily tracked. Seeing the data flow on the screen, realizing that
+I live close to a police station and knowing that the police is also
+wearing cell phones, I wonder how hard it would be for criminals to
+track the position of the police officers to discover when there are
+police near by, or for foreign military forces to track the location
+of the Norwegian military forces, or for anyone to track the location
+of government officials...</p>
+
+<p>It is worth noting that the data reported by the IMSI-catcher
+script mentioned above is only a fraction of the data broadcasted on
+the GSM network. It will only collect one frequency at the time,
+while a typical phone will be using several frequencies, and not all
+phones will be using the frequencies tracked by the grgsm_livemod
+program. Also, there is a lot of radio chatter being ignored by the
+simple_IMSI-catcher script, which would be collected by extending the
+parser code. I wonder if gr-gsm can be set up to listen to more than
+one frequency?</p>