Sadly (due to large amounts of suckage) Intel's "family" numbers went from 5 (Pentium) to 6 (Pentium Pro, Pentium II, Pentium II) to 15 (Pentium 4), and then back to down to 6 again (Pentium M, Atom, Core, Core2, Nehalem, Sandy Bridge, etc).
This mostly means that (on its own) the "family" field is useless for determining the CPU's family. Instead, if "family = 6", you have to use the model number to determine family (and the model numbers are not in a sane order or anything - e.g. models 8, 10 and 11 are Pentium III, and in the middle of that model 9 is Pentium M).
Also note that the model number was originally 4 bits (bits 4 to 7 in EAX), and this wasn't enough to handle Intel's "everything is family 6" silliness so they extended the model number with another 4 bits later (bits 16 to 19 in EAX). This means that to get the full model number you need to do some bit twiddling/shifting (e.g. model = ( (EAX >> 4) & 0x0F) | ( (EAX >> 12) & 0xF0);
).
For example, for model 23 the value in EAX would be 0x???1??7?, and older software (designed before the "model number extension" was introduced) would make the mistake of thinking the CPU is "model 7" when it's not.
I would assume that you have done the same (forgotten to include the "extended model" in your model number); and your actual CPU's details are "family = 6, model = 23". This would make it a Core 2 (Penryn).