Installing Dell OpenManage on Ubuntu 11.04 64bit

Installing Dell OpenManage 6.50 on Ubuntu 11.04 64bit (Meerkat? Olifant? damn names) was a pain. Mostly because Debian-based systems are only supported since recently and thus there is too much outdated info out there (mostly grisly hacks how to force the rpm-based install to work on your system).

Thus, here a very quick summary:

  1. Follow instructions on this page:http://linux.dell.com/repo/community/deb/latest/
  2. Afterwards, in order to be able to authenticate, edit /etc/pam.d/omauth as follows:
    -auth required /lib32/security/pam_unix.so nullok
    -auth required /lib32/security/pam_nologin.so
    -account required /lib32/security/pam_unix.so nullok
    +auth required /lib/x86_64-linux-gnu/security/pam_unix.so nullok
    +auth required /lib/x86_64-linux-gnu/security/pam_nologin.so
    +account required /lib/x86_64-linux-gnu/security/pam_unix.so nullok

Surprisingly painless (if I would have had this information 5 hours earlier). Ah yes, don’t forget to open your firewall for port tcp 1311… :)

Update: I created a project page for my server.

New blog (a.k.a. the most creative post title ever)

Hey Internet,

finally, I had the time and motivation to install a  blog – planned this since a long time. I am doing a lot of tinkering on the side, plus working with Linux etc… Well, as I profit tremendously from what all you people out there published, I thought it’s only fair that I give something back. So this is intended as a loose collection of “projects”.

Over the next week I will (re)post mostly old projects. Edit: I discovered that I can back-date posts. All posts published before this post will be content I moved from my old site – so don’t be surprised about bad formatting and the like. Additionally, all these posts will be in the category ‘old site’.

Happy tinkering!

Reflashing a semi-bricked Hitachi/LG XBox 360 dvd drive

This app will flash single sectors in the Hitachi/LG firmware using debug flash erase/program routines that exist in the 3120L firmware. The difference to SeventhSon’s or the usual flashers is that it utilizes code that isn’t located
in one of the sectors that are changed when applying a hacked firmware. So if something went wrong during flashing, there might be a wee chance that the debug code works and can still be used to fix your drive.

All of this is based on Kev’s/SeventhSon’s work. I simply put together two of his programs to create a flasher that uses the Hitachi debug commands to flash sectors in the drive’s flash. All credit goes to SeventhSon. I even copied this text from his site. :) Unfortunately, his site vanished, so there are none of his notes left.

Use at your own risk, this may break your 360, 360 DVD drive and/or PC if done improperly (or if I happen to have made any mistakes).

Note: This does not work in recovery mode. This tool only helps if your checksum was patched (reports ok), but flashing does not work due to overwritten upload/execute handlers. If you don’t know what I’m talking about, leave it be.

Warning: This app is an interim solution intended only for hackers who know what they are doing. It is very easy to kill your drive with this program. If you fail to update the firmware checksum before you power down the drive, you will break your drive. If you overwrite any of the upload and execution command handlers with broken code, you will break your drive. If you overwrite your flash entry point code, you will break your drive. If you overwrite the sector containing your AES key without backing up your key first, you will break your drive and will not be able to repair it. If you do not understand everything that I just said, then this app isn’t for you.

Download

Flashing sectors in the Hitachi/LG drive’s firmware from a PC

In the following examples encrypted_fw.bin is a full firmware dump. It must be encrypted. Encrypt it after you make your changes and before you run the flasher. There are tools somewhere on the internet that allows you to de/encrypt firmware images. So, encrypted_fw.bin would be created like so (in Windows),

C:\> memdump_win e 12200 8 8000 firmware.bin

(then modify your target sector within firmware.bin)

C:\> FirmCrypt e firmware.bin encrypted_fw.bin

(then flash the modified sector as per the examples below)

You will almost certainly break your drive if you do not encrypt the firmware image before flashing.

The next argument is the address of the target sector in the MN103′s address space in hexadecimal. Just add 0×90000000 to the sector’s offset into the firmware dump to get this value. The final argument is the sector size. The 3120L erase/program routines support a few devices, some appear to have 8KB sectors (0×2000 bytes), others 4KB sectors (0×1000 bytes). My drive has a SST39SF020A flash device (with 4KB sectors). I’m not sure if any Hitachi-LG drives exist with a different chip, but my app supports them just in case. Make sure you specifiy the sector size in hexadecimal.

Please. Don’t use this app if you don’t understand all of the above.

Linux example:

$ ./debug_flashsec /dev/sdb ./encrypted_fw.bin 9003F000 1000

Windows example:

C:\> debug_flashsec_win e encrypted_fw.bin 9003F000 1000

Note that the drive does not restart after each sector flash, nor does it need to be restarted. So you can change multiple sectors in one sitting. For example, a typical session might look like this (in Windows)

C:\> debug_flashsec_win e encrypted_fw.bin 90006000 1000
C:\> debug_flashsec_win e encrypted_fw.bin 90010000 1000
C:\> debug_flashsec_win e encrypted_fw.bin 90027000 1000
C:\> debug_flashsec_win e encrypted_fw.bin 9003E000 1000

This example shows 3 sector changes followed by a final sector change to update the firmware with a new correct checksum value. This final checksum update flash must always be performed unless you actually want the checksum to fail the next time your drive powers up (which will leave you stranded in recovery mode, not a great place to be).

TraMoS – Traffic Management over SNMP

General Info

This software allows to query, display and administrate Linux traffic shaping rules over SNMP. TraMoS was a project I did at university, and I used it for a while at home.

The server-side is based on SNMP (d’oh), tc and htb. More infos on the underlying Linux software can be found at the Linux Advanced Routing howto. I wrote the server side, which consists of a SNMP daemon interfacing with NET-SNMP, in C.

The client is a Java Swing client that allows to graphically administrate hierarchical rulesets. It has been written by a collegue of mine.

Download TraMoS

Unfortunately, I’ve lost the final version of the documentation, but here’s the final, working software:

Required SNMP Server

The project requires Net-SNMP as a base daemon.
Net-SNMP includes everything required (libraries and the like). The server side part of TraMos is an extension to Net-SNMP.

MIB Module Informations

Our own OID prefix is: 1.3.6.1.4.1.19399.8.42

As the hierarchical structure of the HTB traffic shaping classes could not be directly modeled in a MIB tree, all classes are mapped to flat tables in the tree.

Download MIBs

Here’s the MIB tree:
+--traMIB(1)
   |
   +--traIfTable(1)
   |  |
   |  +--traIfEntry(1)
   |     |  Index: traIfID
   |     |
   |     +-- -R-- INTEGER   traIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traIfName(2)
   |     |        Size: 0..255
   |     +-- -R-- String    traIfComment(3)
   |     |        Size: 0..1024
   |     +-- -R-- INTEGER   traIfTraffic(4)
   |              Range: 0..2147483647
   |
   +--traClassTable(2)
   |  |
   |  +--traClassEntry(1)
   |     |  Index: traClassIfID, traClassID
   |     |
   |     +-- -R-- INTEGER   traClassIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassParent(3)
   |     |        Range: -1..2147483647
   |     +-- -R-- String    traClassComment(4)
   |     |        Size: 0..1024
   |     +-- -R-- INTEGER   traClassRate(5)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassCeil(6)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassBurst(7)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassPriority(8)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassQuantum(9)
   |              Range: 1..2147483647
   |
   +--traRuleTable(3)
   |  |
   |  +--traRuleEntry(1)
   |     |  Index: traRuleIfID, traRuleClassID, traRuleID
   |     |
   |     +-- -R-- INTEGER   traRuleIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traRuleClassID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traRuleID(3)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traRuleProtocol(4)
   |     |        Size: 0..15
   |     +-- -R-- String    traRuleDest(5)
   |     |        Size: 0..19
   |     +-- -R-- INTEGER   traRuleDestPort(6)
   |     |        Range: 0..65536
   |     +-- -R-- String    traRuleSource(7)
   |     |        Size: 0..19
   |     +-- -R-- INTEGER   traRuleSourcePort(8)
   |     |        Range: 0..65536
   |     +-- -R-- String    traRuleTos(9)
   |     |        Size: 0..15
   |     +-- -R-- String    traRuleLength(10)
   |              Size: 0..15
   |
   +--traStatTable(4)
   |  |
   |  +--traStatEntry(1)
   |     |  Index: traStatIfID, traStatID
   |     |
   |     +-- -R-- INTEGER   traStatIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traStatID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traStatProtocol(3)
   |     |        Size: 0..15
   |     +-- -R-- INTEGER   traStatPort(4)
   |     |        Range: 1..65536
   |     +-- -R-- INTEGER   traStatTraffic(5)
   |              Range: 1..2147483647
   |
   +--traMIBConformance(6)
      |
      +--traMIBCompliances(1)
      |  |
      |  +--traMIBCompliance(1)
      |
      +--traMIBGroups(2)
         |
         +--traGroup(1)

Petrinet Editor/Simulator

I’ve wrote a program with a friend that allows to edit and simulate limited petrinets, including a format for defining petrinets in XML. It was written as an exercise for the lecture “Beschränkte Petrinetze 1″ of Prof. Gerber at the University of Leipzig.

Last build is from 2003-02-19. You need Java 2 Version 1.4 to run this program. Get it at http://java.sun.com

Webstart

Download

Examples and Documentation

Written by Michael Große & Arne Brutschy, © 2003