Archive

Archives pour 12/2013

CIDR subnet mask cheatsheet ICMP type codes

14/12/2013 Comments off

Source: oav.net

255.255.255.255  11111111.11111111.11111111.11111111  /32  Host (single addr)
255.255.255.254  11111111.11111111.11111111.11111110  /31  Unuseable
255.255.255.252  11111111.11111111.11111111.11111100  /30    2  useable
255.255.255.248  11111111.11111111.11111111.11111000  /29    6  useable
255.255.255.240  11111111.11111111.11111111.11110000  /28   14  useable
255.255.255.224  11111111.11111111.11111111.11100000  /27   30  useable
255.255.255.192  11111111.11111111.11111111.11000000  /26   62  useable
255.255.255.128  11111111.11111111.11111111.10000000  /25  126  useable
255.255.255.0    11111111.11111111.11111111.00000000  /24 "Class C" 254 useable

255.255.254.0    11111111.11111111.11111110.00000000  /23    2  Class C's
255.255.252.0    11111111.11111111.11111100.00000000  /22    4  Class C's
255.255.248.0    11111111.11111111.11111000.00000000  /21    8  Class C's
255.255.240.0    11111111.11111111.11110000.00000000  /20   16  Class C's
255.255.224.0    11111111.11111111.11100000.00000000  /19   32  Class C's
255.255.192.0    11111111.11111111.11000000.00000000  /18   64  Class C's
255.255.128.0    11111111.11111111.10000000.00000000  /17  128  Class C's
255.255.0.0      11111111.11111111.00000000.00000000  /16  "Class B"
     
255.254.0.0      11111111.11111110.00000000.00000000  /15    2  Class B's
255.252.0.0      11111111.11111100.00000000.00000000  /14    4  Class B's
255.248.0.0      11111111.11111000.00000000.00000000  /13    8  Class B's
255.240.0.0      11111111.11110000.00000000.00000000  /12   16  Class B's
255.224.0.0      11111111.11100000.00000000.00000000  /11   32  Class B's
255.192.0.0      11111111.11000000.00000000.00000000  /10   64  Class B's
255.128.0.0      11111111.10000000.00000000.00000000  /9   128  Class B's
255.0.0.0        11111111.00000000.00000000.00000000  /8   "Class A"
  
254.0.0.0        11111110.00000000.00000000.00000000  /7
252.0.0.0        11111100.00000000.00000000.00000000  /6
248.0.0.0        11111000.00000000.00000000.00000000  /5
240.0.0.0        11110000.00000000.00000000.00000000  /4
224.0.0.0        11100000.00000000.00000000.00000000  /3
192.0.0.0        11000000.00000000.00000000.00000000  /2
128.0.0.0        10000000.00000000.00000000.00000000  /1
0.0.0.0          00000000.00000000.00000000.00000000  /0   IP space

                                   Net     Host    Total
Net      Addr                      Addr    Addr    Number
Class   Range      NetMask         Bits    Bits   of hosts
----------------------------------------------------------
A        0-127    255.0.0.0         8      24     16777216   (i.e. 114.0.0.0)
B      128-191    255.255.0.0      16      16        65536   (i.e. 150.0.0.0)
C      192-254    255.255.255.0    24       8          256   (i.e. 199.0.0.0)
D      224-239    (multicast)
E      240-255    (reserved)
F      208-215    255.255.255.240  28       4           16
G      216/8      ARIN - North America
G      217/8      RIPE NCC - Europe
G      218-219/8  APNIC
H      220-221    255.255.255.248  29       3            8   (reserved)
K      222-223    255.255.255.254  31       1            2   (reserved)
(ref: RFC1375 & http://www.iana.org/assignments/ipv4-address-space )
(               http://www.iana.org/numbers.htm                    )
----------------------------------------------------------

The current list of special use prefixes:
	0.0.0.0/8	
	127.0.0.0/8
	192.0.2.0/24
	10.0.0.0/8
	172.16.0.0/12
	192.168.0.0/16
	169.254.0.0/16
	all D/E space
(ref: RFC1918 http://www.rfc-editor.org/rfc/rfc1918.txt   )
(       or     ftp://ftp.isi.edu/in-notes/rfc1918.txt     )
(rfc search:   http://www.rfc-editor.org/rfcsearch.html   )
(              http://www.ietf.org/ietf/1id-abstracts.txt )
(              http://www.ietf.org/shadow.html            )


Martians: (updates at: www.iana.org/assignments/ipv4-address-space )
 no ip source-route
 access-list 100 deny   ip host 0.0.0.0 any
  deny ip 0.0.0.0         0.255.255.255  any log  ! antispoof
  deny ip 0.0.0.0 0.255.255.255  0.0.0.0 255.255.255.255 ! antispoof
  deny ip any             255.255.255.128 0.0.0.127 ! antispoof
  deny ip host            0.0.0.0        any log  ! antispoof
  deny ip host            [router intf]  [router intf] ! antispoof
  deny ip xxx.xxx.xxx.0   0.0.0.255      any log  ! lan area
  deny ip 0/8             0.255.255.255  any log  ! IANA - Reserved
  deny ip 1/8             0.255.255.255  any log  ! IANA - Reserved
  deny ip 2/8             0.255.255.255  any log  ! IANA - Reserved
  deny ip 5/8             0.255.255.255  any log  ! IANA - Reserved
  deny ip 7/8             0.255.255.255  any log  ! IANA - Reserved
  deny ip 10.0.0.0        0.255.255.255  any log  ! IANA - Private Use
  deny ip 23/8            0.255.255.255  any log  ! IANA - Reserved
  deny ip 27/8            0.255.255.255  any log  ! IANA - Reserved
  deny ip 31/8            0.255.255.255  any log  ! IANA - Reserved
  deny ip 36-37/8         0.255.255.255  any log  ! IANA - Reserved
  deny ip 39/8            0.255.255.255  any log  ! IANA - Reserved
  deny ip 41-42/8         0.255.255.255  any log  ! IANA - Reserved
  deny ip 50/8            0.255.255.255  any log  ! IANA - Reserved
  deny ip 58-60/8         0.255.255.255  any log  ! IANA - Reserved
  deny ip 69-79/8         0.255.255.255  any log  ! IANA - Reserved
  deny ip 82-95/8         0.255.255.255  any log  ! IANA - Reserved
  deny ip 96-126/8        0.255.255.255  any log  ! IANA - Reserved
  deny ip 127/8           0.255.255.255  any log  ! IANA - Reserved
  deny ip 169.254.0.0     0.0.255.255    any log  ! link-local network
  deny ip 172.16.0.0      0.15.255.255   any log  ! reserved
  deny ip 192.168.0.0     0.0.255.255    any log  ! reserved
  deny ip 192.0.2.0       0.0.0.255      any log  ! test network
  deny ip 197/8           0.255.255.255  any log  ! IANA - Reserved
  deny ip 220/8           0.255.255.255  any log  ! IANA - Reserved
  deny ip 222-223/8       0.255.255.255  any log  ! IANA - Reserved
  deny ip 224.0.0.0       31.255.255.255 any log  ! multicast
  deny ip 224.0.0.0       15.255.255.255 any log  ! unless MBGP-learned routes
  deny ip 224-239/8       0.255.255.255  any log  ! IANA - Multicast
  deny ip 240-255/8       0.255.255.255  any log  ! IANA - Reserved

filtered source addresses
  0/8                 ! broadcast
  10/8                ! RFC 1918 private
  127/8               ! loopback
  169.254.0/16        ! link local
  172.16.0.0/12       ! RFC 1918 private
  192.0.2.0/24        ! TEST-NET
  192.168.0/16        ! RFC 1918 private
  224.0.0.0/4         ! class D multicast
  240.0.0.0/5         ! class E reserved
  248.0.0.0/5         ! reserved
  255.255.255.255/32  ! broadcast

ARIN administrated blocks: (http://www.arin.net/regserv/IPStats.html)
   24.0.0.0/8 (portions of)
   63.0.0.0/8
   64.0.0.0/8
   65.0.0.0/8
   66.0.0.0/8
  196.0.0.0/8
  198.0.0.0/8
  199.0.0.0/8
  200.0.0.0/8
  204.0.0.0/8
  205.0.0.0/8
  206.0.0.0/8
  207.0.0.0/8
  208.0.0.0/8
  209.0.0.0/8
  216.0.0.0/8
----------------------------------------------------------

well known ports: (rfc1700.txt)
 www.iana.org/assignments/port-numbers

protocol numbers:
 www.iana.org/assignments/protocol-numbers
 www.iana.org/numbers.htm

ICMP(Types/Codes)
 Testing Destination Reachability & Status
  (0/0)  Echo-Reply
  (8/0)  Echo
 Unreachable Destinations
  (3/0)  Network Unreachable
  (3/1)  Host Unreachable
  (3/2)  Protocol Unreachable
  (3/3)  Port Unreachable
  (3/4)  Fragmentaion Needed and DF set (Pkt too big)
  (3/5)  Source Route Failed
  (3/6)  Network Unknown
  (3/7)  Host Unknown
  (3/9)  DOD Net Prohibited
  (3/10) DOD Host Prohibited
  (3/11) Net TOS Unreachable
  (3/12) Host TOS Unreachable
  (3/13) Administratively Prohibited
  (3/14) Host Precedence Unreachable
  (3/15) Precedence Unreachable
 Flow Control
  (4/0)  Source-Quench [RFC 1016]
 Route Change Requests from Gateways
  (5/0)  Redirect Datagrams for the Net
  (5/1)  Redirect Datagrams for the Host
  (5/2)  Redirect Datagrams for the TOS and Net
  (5/3)  Redirect Datagrams for the TOS and Host
 Router
  (6/-)  Alternate-Address
  (9/0)  Router-Advertisement
  (10/0) Router-Solicitation
 Detecting Circular or Excessively Long Routes
  (11/0) Time to Live Count Exceeded
  (11/1) Fragment Reassembly Time Exceeded
 Reporting Incorrect Datagram Headers
  (12/0) Parameter-Problem
  (12/1) Option Missing
  (12/2) No Room for Option
 Clock Synchronization and Transit Time Estimation
  (13/0) Timestamp-Request
  (14/0) Timestamp-Reply
 Obtaining a Network Address (RARP Alternative)
  (15/0) Information-Request
  (16/0) Information-Reply
 Obtaining a Subnet Mask [RFC 950]
  (17/0) Address Mask-Request
  (18/0) Address Mask-Reply
 Other
  (30/0) Traceroute
  (31/0) Conversion-Error
  (32/0) Mobile-Redirect

Ref: [RFC 792] [RFC 896] [RFC 950] [RFC 1016]
  www.cisco.com/univercd/cc/td/doc/product/lan/cat6000/sw_5_3/cofigide/qos.htm#19774



Decimal system Prefix's
              Factor               Exponent  Prefix
---------------------------------------------------
 1 000 000 000 000 000 000 000 000...10^24....yotta
     1 000 000 000 000 000 000 000...10^21....zetta
         1 000 000 000 000 000 000...10^18....exa
             1 000 000 000 000 000...10^15....peta
                 1 000 000 000 000...10^12....tera
                     1 000 000 000...10^9.....giga
                         1 000 000...10^6.....mega
                             1 000...10^3.....kilo
                               100...10^2.....hecto
                                10...10^1.....deka
                               0.1...10^-1....deci
                              0.01...10^-2....centi
                             0.001...10^-3....milli
                         0.000 001...10^-6....micro
                     0.000 000 001...10^-9....nano
                 0.000 000 000 001...10^-12...pico
             0.000 000 000 000 001...10^-15...femto
         0.000 000 000 000 000 001...10^-18...atto
     0.000 000 000 000 000 000 001...10^-21...zepto
 0.000 000 000 000 000 000 000 001...10^-24...yocto
---------------------------------------------------

Convert Fahrenheit <> Celsius:
 Celsius = (Fahrenheit - 32) / 1.8
 Fahrenheit = (Celsius * 1.8) + 32

 

Categories: Réseau Tags: ,

MySQL – Supprimer des doublons dans une table

10/12/2013 Comments off

Pour supprimer des doublons au niveau d’une table donnée définie comme suit :

CREATE TABLE IF NOT EXISTS TabTest (
           cle_prim integer(4) NOT NULL auto_increment,
           x integer,
           y integer,
           z integer,
           Constraint pk_Tab_test PRIMARY KEY  (cle_prim)
);

Il faut commencer par fixer les champs relatifs au doublons (dans notre cas les champs x et y):

mysql> select * from TabTest;
+----------+------+------+------+
| cle_prim | x    | y    | z    |
+----------+------+------+------+
|        1 |    1 |    2 |    3 |
|        2 |    1 |    2 |    3 |
|        3 |    1 |    5 |    4 |
|        4 |    1 |    6 |    4 |
+----------+------+------+------+
4 rows in set (0.00 sec)

Pour supprimer les doublons au niveau des champs x et y lancer la commande :

ALTER IGNORE TABLE  TabTest ADD UNIQUE INDEX(x,y);

 

Categories: Bases de données Tags: ,

Clé USB Bootable | Comment faire depuis un Mac ?

10/12/2013 Comments off

Pour créer une clé USB bootable depuis un Mac, ce n’est pas spécialement difficile. Par contre, il est vrai que la méthode n’est pas hyper intuitive à première vue. Pour les fans de la ligne de commande, c’est par ici que çà ce passe! Et pour les autres, ne vous inquiètez pas, c’est très facile, et très simple finalement.

Donc voici, l’opération est constitué de trois étapes principales :

  1. Télécharger une image disque (.iso par exemple) de l’OS de votre choix. Par exemple, pour bien débuter, une image d’une distribution Linux de type LiveCD.
  2. Insérer la clé USB, et s’assurer de démonter le volume : Sinon, nous ne pouvons pas écrire « bas niveau » avec la commande « dd » de unix.
  3. « Graver » l’image disque sur la clé.

Donc, une fois que vous avez télécharger l’image disque, insérer la clé USB dans la prise de votre mac, et ensuite, à partir d’une fenètre Terminal tapez :

diskutil list

En théorie vous devriez voir un affichage similaire à celui:

A partir de cette liste, identifiez votre clé USB. Dans mon cas c’est/dev/disk2. Une fois identifié, nous pouvons passer à l’étape deux, et nous allons tapez cette commande :

diskutil unmountDisk /dev/disk2

N’oubliez pas de remplacer disk2 par le n° de votre clé USB!

Nous sommes prêt à passer à la troisième, et dernière étape : La gravure! (ouais, je sais, une clé USB ne se grave pas…). Donc, pour se faire, notez bien le nom de votre fichier image, nous allons en avoir besoin pour taper cette commande :
sudo dd if=monImageBootable.iso of=/dev/disk2 bs=1m

N’oubliez pas de remplacer disk2 par le n° de votre clé USB!

Le mot de passe root vous sera demandé, ensuite la copie va s’effectuer.

Une fois terminé, il suffit de redémarrer Macosx en appuyant sur la touche ALT pour avoir une sélection des disques bootable, et de choisir la clé USB.

 

Categories: Système Tags: , ,

Il y a 15 ans, l’acquisition de NeXT par Apple

10/12/2013 Comments off

next apple20 décembre 1996 : par deux images successives sur la page d’accueil de son site, NeXT annonce son acquisition par Apple. Plus qu’un simple achat, il s’agit en fait d’une fusion : quinze ans plus tard, on peut dire que c’est NeXT qui a absorbé Apple, et non le contraire.

Présenté en 1991, le Système 7 a quasiment traversé la décennie, devenant symptomatique de la maladie frappant Apple.

L’année 1995, notamment, est une charnière : Apple licencie son système à d’autres fabricants, autorisant l’apparition de clones plus puissants et moins chers que les Mac ; le Système 7.5.2 inaugure quant à lui une période d’instabilité logicielle qui durera deux ans (lire : Apple, Jobs : John Sculley à cœur ouvert).

À l’époque, Apple travaille sur un tout nouveau système, nom de code Copland.

Le Système 7.5.3 (source)

Alors que les PDG se succèdent à la tête d’Apple, Copland se révèle être un véritable échec. Alors que Gil Amelio avait promis de présenter le futur du logiciel d’Apple en janvier 1997, le projet Copland atteint une impasse à l’été 1996 : non content d’avoir ralenti le développement des mises à jour du Système 7, il n’est jamais parvenu à maturité, se révélant particulièrement instable et prenant très mal en compte Internet. Apple se met alors en quête d’une solution externe.

next appleLa firme de Cupertino envisage plusieurs solutions : Jean-Louis Gassée, fondateur d’Apple France et directeur de la division recherche et développement d’Apple jusqu’à sa démission en 1990, propose son système, BeOS. Cette option est très sérieusement considérée : Gassée bénéficie encore d’une excellente image auprès des employés d’Apple, et son OS est séduisant.

Alors qu’Apple doit parvenir au plus vite à un accord, il fait cependant l’erreur de faire traîner les discussions : Sun Solaris ou même Windows NT sont alors étudiés de près, le premier par Ellen Hancock (ancienne d’IBM, directeur de la R&D d’Apple ayant mis fin à Copland), le deuxième par Marco Landi (no. 2 d’Apple).

Lire la suite…

Snow Leopard : le noyau démarre en 32 bits par défaut

10/12/2013 Comments off

Source: MacGeneration : L’essentiel du Mac en français

Avec ce que l’on suppose être la Golden Master de Snow Leopard, Apple fournit un document sur la manière dont démarre son système d’exploitation. Sur tous les modèles, le kernel se charge en 32 bits à l’exception des Xserve qui bootent en 64 bits.

La marque à la pomme récapitule dans un tableau les Mac capables effectivement de démarrer en 64 bits.

skitched-20090819-095846

Dans ce document, Apple explique que pour démarrer en 64 bits, outre le processeur, il faut que l’EFI de votre machine soit compatible.

Pour le savoir, il suffit de taper la commande suivante dans le terminal :

ioreg -l -p IODeviceTree | grep firmware-abi
Terminal_—_bash_—_89×10-20090819-101628
Dans notre cas, le Mac possède bel et bien un EFI compatible 64 bits

Certains ordinateurs comme la première génération de Mac Pro, sont équipés de processeurs 64 bits, mais possèdent un EFI 32 bits. Toutefois, certains ont réussi à utiliser le noyau en 64 bits, même avec un EFI 32 bits, et n’ont pas rencontré de problème particulier. Pour les machines dotées d’un EFI 32 bits, il n’est pas impossible qu’Apple propose lors de la sortie de Snow Leopard une mise à jour firmware.

Pour démarrer en 64 bits, il suffit d’appuyer sur les touches ‘6’ et ‘4’ lors du démarrage de Snow Leopard. En 64 bits, surtout la première fois, le Mac est un peu plus long à démarrer. Il est également possible d’éditer le fichier com.apple.Boot.plist pour systématiser le lancement du kernel en 64 bits.

Si Apple impose encore par défaut le 32 bits, c’est très certainement pour éviter des problèmes de compatibilités avec certains pilotes (imprimantes, scanners…), qui n’ont pas été mis à jour pour le 64 bits. Apple pourrait faire automatiquement le switch d’ici quelques mois lors de la sortie d’une mise à jour mineure de Snow Leopard.

Précisons que si le kernel charge en 32 bits, l’immense majorité des applications livrées avec Snow Leopard tourne bel et bien en 64 bits. La preuve en images :

Moniteur_d’activité-20090819-101546
Categories: Matériel, Système Tags: ,

Howto: Geolocation for Fail2ban

10/12/2013 Comments off

source: fail2ban.org

 

Using geolocation to locate your attackers.

I use fail2ban on my servers to protect them from would-be attackers, if you don’t your either insanely nieve to the fact that somebody wants in your system, or your just wanting to see if you can get hacked. Most of the attackers I would assume are just after another « bot » in their « net », or maybe a place to host files.

Durzo hosts a script that allows you to log the attacks on you into a mysql database with geocoding, I thought this would be cool to use as I could see from where I was being attacked. I then got this working and another script to display the table in a web page so I could view the data easily.

I then found some scripts from Google to pull data from MySQL in a geolocation table and generate an XML file used to import into Google Maps. With some tweaking and customizing, I now have a map with the geolocation data as markers on the map. Not all the markers are right on a building, but they are close enough for me to see the areas from which attacks are coming.

Now on to the good stuff… Lire la suite…

Connection par ssh derrière un proxy html

10/12/2013 Comments off

Par défaut, ssh ne sait pas se connecter à un serveur si le client est placé derrière un proxy. Pour ajouter cette fonctionnalité, il faut :

– installer le paquet connect-proxy

apt-get install connect-proxy

– ajouter un fichier  ~/.ssh/config (juste pour un compte) ou /etc/ssh/ssh_config (configuration globale) contenant les lignes suivantes :

# on n'a pas besoin de connect pour le réseau local
# il faut modifier ou ajouter des lignes Host pour décrire votre réseau local Host 192.168.0.* ProxyCommand /usr/bin/connect %h %p # toutes les autres adresses utilisent la commande connect
# il faut remplacer l'adresse IP et le port par les valeurs de votre proxy
Host *
ProxyCommand /usr/bin/connect -H 192.168.0.1:8080 %h %p

On peut alors se connecter sans problème à un hôte par la commande classique : ssh identifiant@serveur

Categories: Réseau, Système Tags: , , ,

Find all active IP addresses in a network

10/12/2013 Comments off

Today I found myself reconfiguring a wireless access point I hadn’t used in a very long time. I no longer have the manual (so I could reset it to factory defaults) nor do I remember what the obscure IP address I configured it with was. Luckily I do know what network it’s setup for ( 192.168.1.x ) but I don’t want to have to try to connect to all 254 IP addresses (192.168.1.1 through 192.168.1.254) as that would take quite some time.

So what I’m going to do is use Nmap a swiss army knife for network operators and system admins. What we’re going to do is use Nmap to scan the entire network and tell us which IP addresses are active. This will allow us to drastically reduce the number of IP addresses we have to try.

There are Nmap versions for all three major OS’s *nix, OS X and Windows. I’ll be showing you the syntax for the *nix/OS X version.

nmap -sP 192.168.1.0/24

replace 192.168.1.0/24 with whatever network it is you’re trying to scan.
The /24 is the netmask of the network in CDIR notation. If you need a cheat sheet you can find one here

Once you press return (or enter) Nmap will start to work pinging each and every IP address on your network and noting which ones respond and which don’t. (Note that if your device has a firewall that discards ping requests it will appear to be down to this scan)

You’ll quickly get an output similar to the following

Starting Nmap 4.50 ( http://insecure.org ) at 2008-08-19 10:15 PDT
HOST 192.168.1.25 appears to be up.
MAC Address: 0:0F:1F:4C:0B:E6 (WW Pcba Test)
Nmap finished: 256 IP addresses (3 hosts up) scanned in 5.711 seconds

Astuces SSH

10/12/2013 Comments off

Source: Stupid SSH Tricks: A Better Hosts File

J’ai bidouillé avec SSH pour me simplifier la vie. Une des pistes était de créer des host aliases dans le fichier de configuration de SSH (en général ~/.ssh/config). Et c’est plutôt facile. Voici un exemple;

Host webhost
   User host_user
   HostName example.com
   IdentityFile ~/.ssh/some_id_dsa

La raison pour laquelle cette méthode est préférable que d’utiliser le fichier de hosts (/private/etc/hosts) est que vous pouvez par exemple utiliser des commandes comme scp.

scp ~/somefile.txt webhost:~/upload.txt

et scp, comme il utilise ssh, va comprendre ce que vous voulez dire, c’est-à-dire en réalité:

scp -i ~/.ssh/some_id_dsa ~/somefile.txt host_user@example.com:~/upload.txt

Si vous utilisez couramment ssh et scp comme je le fais, vous allez trouver cette méthode très pratique. Et si vous utilisez des clés ssh, cela rend le travail distant aussi commode que le travail en local.

Categories: Système Tags: , ,

EFI firmware protection locks down newer Macs

10/12/2013 Comments off

Apple’s firmware password security is greatly enhanced in recent Mac models, making it a rather robust security feature.

With Apple’s firmware password feature on Mac systems you can lock down the options to select an alternative startup disk, boot to Safe or Single User modes, reset the PRAM, and otherwise start the system in ways that can bypass the security features of OS X.

However, as a security measure the firmware password has been met with some criticism because it could easily be bypassed by someone who has physical access to the system. In earlier Intel-based Macs the firmware password was stored in the PRAM of the system, and was simply read by the system’s EFI firmware before other PRAM variables in order to maintain the lock on the system; however, this setup had drawbacks that allowed the firmware to be reset or even revealed.

LionFirmwarePasswordLocation_270x203The firmware password on any Mac can be set using the Firmware Password utility that is available on the OS X installation volume.

Altering the system’s hardware configuration, such as by removing or adding RAM modules, would clear the security password and permit booting to alternative modes. Not only did this basic way of bypassing the password exist, but the password was also not stored very securely. While administrative rights are required to uncover it, with these rights one can use included utilities in OS X to reveal the password in the PRAM, which is masked only by a simple obfuscation routine.

These fallbacks made the Mac’s firmware password almost laughable as a security measure, but this has changed with newer Mac systems. Starting in 2011, users began finding they could no longer reset their firmware passwords simply by modifying the hardware configuration. The systems would maintain the lock and prevent the use of alternate boot modes, leaving no choice for those who had set the password and then forgotten it but to bring their systems in to Apple for servicing.

In these newer systems, instead of using the PRAM to store the EFI firmware password, Apple has resorted to using a separate programmable controller from Atmel (PDF) that contains lockable flash memory used to store the password. This tiny chip is tucked away on the motherboard and includes include a security feature that stores the password in ways that require special programming with identifier numbers for both your motherboard and the Atmel chip to access and erase, which must done using special routines during the boot process.

As it’s not dependent on other system components to maintain this lock, this new chip therefore cannot be unlocked simply by a hardware change. The password is also not available in the PRAM, so it cannot be revealed to users, regardless of their administrative status.

To reset the firmware password on newer Macs, you must now follow these steps:

  1. Boot with Option key held to display the boot menu’s firmware password prompt.
  2. Press Control-Option-Command-Shift-S to reveal a 33-digit hash (mixed letters and numbers) that contains an identifier for your specific motherboard and the Atmel chip used for your system. In this hash, the first 17 digits are an identifier for the system’s motherboard, and the last 16 digits are a hash for the password.
  3. Submit the hash to Apple, where someone will put it through a special utility to create a keyfile that is specific for your machine.
  4. Place the file on a special USB boot drive and hold Option to load the boot menu and select this drive.
  5. The system will read the file and properly reset the firmware password stored in the Atmel chip.

This process may seem easy enough, except that the utility for creating the keyfile is kept at Apple so you have to go through an authorized service center, which will contact technicians at Apple for this service. Secondly, the Apple technicians will not give you the keyfile for unlocking your system, so you must get your system serviced to perform this step.

FirmwarePasswordUtility_270x193Apple’s Firmware Password utility in OS X’s Recovery HD partition is still used to set the firmware password on newer Macs.(Credit: Screenshot by Topher Kessler/CNET)

 

Even if you were able to get the keyfile, it cannot be used on any other Mac system. The Atmel chip’s serial number and motherboard identifier are factory-programmed, resulting in a pairing that is unique for your system. This is why the hash numbers for your system must be programmed into the keyfile, making it machine-specific.

Even so, there is one way to bypass the Atmel chip, which is to manually remove it and solder a new, unlocked chip to your motherboard; however, without precise reflow soldering tools and techniques, this would likely result in an unmitigated disaster that not only would void your warranty, but would very likely break your machine.

Coupled with Apple’s FileVault full-disk encryption to protect data should the hard drive be removed, the firmware password in Apple’s latest systems provides a very effective hardware security lock. Setting it up involves the same steps as for all of Apple’s hardware, but these advances make it so that to change or remove it you need to either use the same firmware password utility and remember the previous password, or have it serviced.

Categories: Constructeur, Matériel Tags: ,