On 08.10.2010 05:07, ron minnich wrote:
> Kinda fun.
>
> ---------- Forwarded message ----------
>
> Date: Thu, Oct 7, 2010 at 11:25 AM
> Subject: Dogbert's Blog: BIOS Password Backdoors in Laptops
> To: ron minnich <rminnich(a)gmail.com>
>
>
> Amusing, and potentially useful, too.
>
> http://dogber1.blogspot.com/2009/05/table-of-reverse-engineered-bios.html
>
Ooh nice! I really need to write a short tutorial on how to do password
recovery with flashrom if you can still boot the machine (i.e. only a
BIOS setting screen password) or if you can open the machine and access
the flash chip.
Regards,
Carl-Daniel
--
http://www.hailfinger.org/
I wanted to tag 0.9.3, but then I noticed that compilation was broken in
a few cases, and the README had insufficient information.
Fix that.
In detail:
CONFIG_BITBANG_SPI was not selected if CONFIG_NICINTEL_SPI was on by
default.
Wiki output was missing all flash chips if CONFIG_INTERNAL was not selected.
ft2232_spi used possibly negative indices in the toupper() function/array.
Software requirements on non-Linux/FreeBSD/OpenBSD operating systems
were missing.
Non-x86 compilation does not work with the default programmer set, so
list the make parameters which result in a working build.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006(a)gmx.net>
Index: flashrom-compilefixes/Makefile
===================================================================
--- flashrom-compilefixes/Makefile (revision 1201)
+++ flashrom-compilefixes/Makefile (working copy)
@@ -115,21 +115,6 @@
# RayeR SPIPGM hardware support
CONFIG_RAYER_SPI ?= yes
-# Bitbanging SPI infrastructure, default off unless needed.
-ifeq ($(CONFIG_RAYER_SPI), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-ifeq ($(CONFIG_INTERNAL), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-ifeq ($(CONFIG_NICINTEL_SPI), yes)
-override CONFIG_BITBANG_SPI = yes
-else
-CONFIG_BITBANG_SPI ?= no
-endif
-endif
-endif
-
# Always enable 3Com NICs for now.
CONFIG_NIC3COM ?= yes
@@ -170,7 +155,22 @@
# Disable wiki printing by default. It is only useful if you have wiki access.
CONFIG_PRINT_WIKI ?= no
+# Bitbanging SPI infrastructure, default off unless needed.
+ifeq ($(CONFIG_RAYER_SPI), yes)
+override CONFIG_BITBANG_SPI = yes
+else
ifeq ($(CONFIG_INTERNAL), yes)
+override CONFIG_BITBANG_SPI = yes
+else
+ifeq ($(CONFIG_NICINTEL_SPI), yes)
+override CONFIG_BITBANG_SPI = yes
+else
+CONFIG_BITBANG_SPI ?= no
+endif
+endif
+endif
+
+ifeq ($(CONFIG_INTERNAL), yes)
FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1'
PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o dmi.o internal.o
# FIXME: The PROGRAMMER_OBJS below should only be included on x86.
Index: flashrom-compilefixes/print_wiki.c
===================================================================
--- flashrom-compilefixes/print_wiki.c (revision 1201)
+++ flashrom-compilefixes/print_wiki.c (working copy)
@@ -268,8 +268,8 @@
time_t t = time(NULL);
printf(wiki_header, ctime(&t), flashrom_version);
+ print_supported_chips_wiki(2);
#if CONFIG_INTERNAL == 1
- print_supported_chips_wiki(2);
print_supported_chipsets_wiki(3);
print_supported_boards_wiki();
#endif
Index: flashrom-compilefixes/ft2232_spi.c
===================================================================
--- flashrom-compilefixes/ft2232_spi.c (revision 1201)
+++ flashrom-compilefixes/ft2232_spi.c (working copy)
@@ -148,7 +148,7 @@
free(arg);
arg = extract_programmer_param("port");
if (arg) {
- switch (toupper(*arg)) {
+ switch (toupper((unsigned char)*arg)) {
case 'A':
ft2232_interface = INTERFACE_A;
break;
Index: flashrom-compilefixes/README
===================================================================
--- flashrom-compilefixes/README (revision 1201)
+++ flashrom-compilefixes/README (working copy)
@@ -60,6 +60,11 @@
* devel/gmake
* sysutils/pciutils
+On other operating systems, you need the following software:
+
+ * pciutils+libpci (if you want support for mainboard or PCI device flashing)
+ * libusb (if you want FT2232 or Dediprog support)
+
To compile on Linux, use:
make
@@ -111,6 +116,18 @@
http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi7b.zip and make sure
CWSDPMI.EXE is in the current directory.
+Processor architecture dependent features:
+
+ On non-x86 architectures you have to disable a few programmers because they
+ use port-based I/O which is not directly available on non-x86. Please add
+ CONFIG_RAYER_SPI=no CONFIG_NIC3COM=no CONFIG_ATAHPT=no CONFIG_NICREALTEK=no \
+ CONFIG_NICNATSEMI=no
+ as parameters to the "make" invocation.
+ Besides that, the internal programmer is only supported on x86 and MIPS. On
+ other architectures, please add
+ CONFIG_INTERNAL=no
+ as parameter to the "make" invocation.
+
Installation
------------
--
http://www.hailfinger.org/
A lot of messages sent to flashrom(a)flashrom.org just have »flashrom -V« as the subject rendering it in my opinion unusable.
Adding the board/device name to the subject would help a lot when skimming over the messages by the subject line or searching the messages just using the subject line.
• I did not add that note to outputs saying to report a bug to the mailing list.
• I do not know if the subject line can be created automatically in those message, so users just have to copy and paste them.
• I am not a native speaker, so I do not know if using plain »subject« instead of »subject line« would be enough and if the propositions I used are correct.
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
---
board_enable.c | 7 +++++--
chipset_enable.c | 7 +++++--
flashrom.c | 5 +++--
pcidev.c | 3 ++-
4 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/board_enable.c b/board_enable.c
index ae0fbfa..52052d3 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -430,7 +430,9 @@ int it8705f_write_enable(uint8_t port)
max_rom_decode.parallel = 1024 * 1024;
msg_pinfo("IT8705F with very unusual settings. Please "
"send the output of \"flashrom -V\" to \n"
- "flashrom(a)flashrom.org to help us finish "
+ "flashrom(a)flashrom.org with \n\n"
+ "IT8705: your board name: flashrom -V \n\n"
+ "as the subject to help us finish "
"support for your Super I/O. Thanks.\n");
ret = 1;
} else if (tmp & 0x08) {
@@ -1964,7 +1966,8 @@ int board_flash_enable(const char *vendor, const char *part)
board = NULL;
} else {
msg_pinfo("NOTE: Running an untested board enable procedure.\n"
- "Please report success/failure to flashrom(a)flashrom.org.\n");
+ "Please report success/failure to flashrom(a)flashrom.org \n"
+ "with your board name and SUCCESS or FAILURE in the subject.\n");
}
}
diff --git a/chipset_enable.c b/chipset_enable.c
index f191061..4549e52 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -923,7 +923,9 @@ static int enable_flash_mcp6x_7x(struct pci_dev *dev, const char *name)
}
out_msg:
msg_pinfo("Please send the output of \"flashrom -V\" to "
- "flashrom(a)flashrom.org to help us finish support for your "
+ "flashrom(a)flashrom.org with \n\n"
+ "your board name: flashrom -V \n\n"
+ "as the subject to help us finish support for your "
"chipset. Thanks.\n");
return ret;
@@ -1178,7 +1180,8 @@ int chipset_flash_enable(void)
if (ret != -2) {
msg_pinfo("WARNING: unexpected second chipset match: "
"\"%s %s\"\nignoring, please report lspci and "
- "board URL to flashrom(a)flashrom.org!\n",
+ "board URL to flashrom(a)flashrom.org "
+ "with your board name in the subject line!\n",
chipset_enables[i].vendor_name,
chipset_enables[i].device_name);
continue;
diff --git a/flashrom.c b/flashrom.c
index 45d086d..9dd1c48 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1290,7 +1290,7 @@ void emergency_help_message(void)
{
msg_gerr("Your flash chip is in an unknown state.\n"
"Get help on IRC at irc.freenode.net (channel #flashrom) or\n"
- "mail flashrom(a)flashrom.org!\n"
+ "mail flashrom(a)flashrom.org with your board name in the subject line!\n"
"-------------------------------------------------------------"
"------------------\n"
"DO NOT REBOOT OR POWEROFF!\n");
@@ -1430,7 +1430,8 @@ void check_chip_supported(struct flashchip *flash)
"output with the additional -V option for all "
"operations you tested (-V, -Vr,\n"
"-Vw, -VE), and mention which mainboard or "
- "programmer you tested.\n"
+ "programmer you tested. Please mention your board in "
+ "the subject line.\n"
"Thanks for your help!\n"
"===\n");
}
diff --git a/pcidev.c b/pcidev.c
index f7048e7..decf4e7 100644
--- a/pcidev.c
+++ b/pcidev.c
@@ -69,7 +69,8 @@ uint32_t pcidev_validate(struct pci_dev *dev, uint32_t bar,
msg_pinfo("===\nThis PCI device is UNTESTED. Please "
"report the 'flashrom -p xxxx' output \n"
"to flashrom(a)flashrom.org if it works "
- "for you. Thank you for your help!\n===\n");
+ "for you. Please add the name of your PCI device "
+ "to the subject. Thank you for your help!\n===\n");
}
return addr;
--
1.7.1