You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm bringing up issue #1 again since there are some bcd and mesa files related to product factoring in the 6085 VP Programming Package for XDE 6.0 (located in bitsavers's bits/Xerox/6085/6085_XDE_6.0_VP_Devel.zip). Using dmk2raw and the extractxeroxfloppy tool I was able to recover, like, 1000+ BCD, mesa source codes and symbol files. Among those are a lot of bcd files (and even some sources/interfaces) related to Product Factoring.
-- File: PFSupport.mesa - last edit:
-- Breisacher.ES 29-Apr-85 12:58:41
-- Curbow.ES 17-Feb-85 14:21:55
-- Copyright (C) 1984, 1985 by Xerox Corporation. All rights reserved.
<<Overview:
Interface to be used by some user interface to get, set and
list Software Options.>>
DIRECTORY
NSFile USING [Handle, Session],
ProductFactoring,
System,
Volume,
XFormat,
XString;
PFSupport: DEFINITIONS =
BEGIN
--TYPES
ErrorType: TYPE = {
passwordExpired, -- That password cannot be used
incorrectPasswordFormat, -- Invalid number or set of chars in password
passwordInvalid, -- The password is not valid for this machine
productDead, -- This product is not currently valid
problemAccessPFInfo, -- Unable to access the PF file (Probably a software error)
superPassword -- This password is a Super Password.
};
PackedOptions: TYPE = RECORD [
product: ProductFactoring.Product,
options: PACKED ARRAY ProductFactoring.ProductOption OF BOOLEAN _ ALL[FALSE]];
SSNProc: TYPE = PROC [
ssnString: XString.Reader, configTime: System.GreenwichMeanTime];
<< This procedure will be called with a SSN string to be printed. >>
PasswordProc: TYPE = PROC [newPassword: XString.Reader];
<< This procedure will be called with a Password to be printed. >>
ProductDescProc: TYPE = PROC [
desc: XString.Reader, product: ProductFactoring.Product,
changeTime: System.GreenwichMeanTime] RETURNS [stop: BOOLEAN _ FALSE];
<< This procedure will be called with the information about one particular product. If this is the result of EnumerateProducts, rather than GetProductDescription, then when stop is set to TRUE the enumeration will stop. >>
ProductOptionDescProc: TYPE = PROC [desc: OptionDesc]
RETURNS [stop: BOOLEAN _ FALSE];
<< This procedure will be called with the information about one particular product. If this is the result of EnumerateProductOptions, rather than GetProductOptionDescription, then when stop is set to TRUE the enumeration will stop. >>
OptionDesc: TYPE = RECORD [
optionName: XString.ReaderBody _ XString.nullReaderBody, -- name of the option
productOption: ProductFactoring.ProductOption, -- code unique within this product.
prerequisite: ProductFactoring.Prerequisite -- Any other Product option that this depends upon.
];
--ERRORS
SupportError: ERROR [type: ErrorType];
--PROCEDURES to manipulate Options for a specified Product.
<<BACKGROUND:
Associated with each Product is a set of options. Each option is something considered valuable enough to warrant control of its use by the vendor. Therefore, the Software options (which are a representation of valuable property) are difficult to change so as to prevent unauthorized changes. The vehicle used to change the options is a password. Each password is valid on only one machine for one use. It consists of the new set of options for a particular product, an expiration date, and a random seal to control use. The random seal is stored in a file, and changed after each new set of options is "Locked" onto the disk. This random seal is returned to the user as part of the Software Serial Number which is given to the Xerox authority which gives out passwords. The Software Serial Number also contains the curent set of options for the product for which new options are desired. It also contains a constant seal.>>
Start: PROCEDURE [
volume: Volume.ID, directory: NSFile.Handle, session: NSFile.Session];
<<Guarantees that the primary PF file (in the root directory of volume) and the secondary PF file (in directory) contain the latest PF information and caches the information for subsequent calls to Enabled.
If this machine has not yet been ProductFactored it will create an file with all options reset.
If the file is from an earlier version, then it will be converted forward . >>
GetSSN: PROCEDURE [
product: ProductFactoring.Product, volume: Volume.ID, proc: SSNProc];
<< Generate the SSN for the specified product and pass it to the specified proc. Volume specifies the location of the Software Options file.
May raise SupportError[problemAccessPFInfo]>>
DecodePassword: PROCEDURE [password: XString.Reader, volume: Volume.ID]
RETURNS [packedOptions: PackedOptions];
<< Decode the password and return the decoded information and when it expires. These options will NOT be written onto the disk. The Reader will not be freed.
May raise SupportError[problemAccessPFInfo]
May raise SupportError[passwordInvalid]
May raise SupportError[incorrectPasswordFormat]
May raise SupportError[passwordExpired]
May raise SupportError[superPassword] >>
LockOptions: PROCEDURE [password: XString.Reader, volume: Volume.ID];
<< Decode the password and write the new options onto the disk. Note: The SSN will change at the completion of this operation. Volume specifies location of the system volume, i.e. where to store the Software Options. The Reader will not be freed.
May raise any error that DecodePassword raises. >>
SelectOptions: PROC [
password: XString.Reader, packedOptions: PackedOptions, volume: Volume.ID];
<< If the password is a valid SuperPassword then the packed options will be stored into the Software Options file on the specified volume.
May raise any error that DecodePassword raises except SupportError[superPassword].
Raises SupportError[passwordInvalid] if not a valid SuperPassword >>
GetLockedOptions: PROC [product: ProductFactoring.Product, volume: Volume.ID]
RETURNS [packedOptions: PackedOptions];
<< Returns the options stored on the disk associated with the specified product.
May raise SupportError[problemAccessPFInfo] >>
-- PROCEDURES to manipulate Products as a group.
-- The ERROR raised by these procs is from ProductFactoring rather than PFSupport.
GetProductDescription: PROC [
product: ProductFactoring.Product, proc: ProductDescProc];
<< This procedure will call the specified proc with info about the specified product.
Raises Error[missingProduct] if the Product has not yet been defined.
Raises Error[illegalProduct] if the value of product is out of range.>>
EnumerateProducts: PROC [proc: ProductDescProc];
<< This procedure will call the specified proc with info about the every defined product.>>
GetProductOptionDescription: PROC [
product: ProductFactoring.Product,
productOption: ProductFactoring.ProductOption, proc: ProductOptionDescProc];
<< Returns info about one specific option of the specified product.
Raises Error[illegalProduct] if the value of product is out of range.
Raises Error[illegalOption] if the value of productOption is out of range.
Raises Error[missingProduct] if the Product has not yet been defined.
Raises Error[missingOption] if the Option has not yet been defined.>>
EnumerateProductOptions: PROC [
product: ProductFactoring.Product, proc: ProductOptionDescProc];
<< This procedure will call the specified proc with info about the every defined option of the specified product. >>
DeleteProduct: PROC [product: ProductFactoring.Product];
<< The Product description and all associated ProductOption descriptions for the specified Product will be deleted. If the specified Product has not yet been described, then nothing will happen. After the last Product description has been deleted, the zone used internally will be deleted.
Raises Error[illegalProduct] if the value of product is out of range.>>
DeleteProductOption: PROC [
product: ProductFactoring.Product,
productOption: ProductFactoring.ProductOption];
<< The specified ProductOption description for the specified Product will be deleted. If it has not yet been defined, then nothing will happen.
Raises Error[illegalOption] if the value of productOption is out of range.>>
-- Support Routines
DecodeSupportError: PROC [
type: PFSupport.ErrorType, handle: XFormat.Handle];
<< Appends a string to the handle appropriate for the error type. >>
DecodePFError: PROC [
type: ProductFactoring.ErrorType, handle: XFormat.Handle];
<< Appends a string to the handle appropriate for the error type. >>
END. --of PFSupport.mesa
LOG [Time - Person - Action]
28-Nov-84 15:32:17 - Curbow - Created for BWS 4.0
This is one of the files, which has some comments on how factoring works. I hope this can shed some light on how we can make a "password tool".
From this, I can understand that the software passwords in the README.md file in this repo are probably super passwords since they bring up an Analyst / Customer selection with a slightly different UI than documented in the Documentation Library PDFs for installation and activation. I can also see that there is a primary (public) and secondary (private) PF file in an installation, but they aren't visible (even with the System Folder tool in the VP 6.0 Devel Tools floppy). Since there is a similar tool for extracting files out of Xerox-formatted floppies, would it be possible to extract files off of a Darkstar hard disk image? If it would, then we could extract the PF files and inspect them.
So, to conclude, the VP libraries/interfaces and debugging symbols are available for XDE6 / VP2 on this link. It's for the 6085 however it can be ran with devhawala's dwarf emulator, but the only thing missing is XDE 6.0 itself and the Mesa Development Tools, which both of them, unfortunately, seem to be lost right now.
Thanks!
-blw
The text was updated successfully, but these errors were encountered:
Oh, and also, a quick question out of curiosity:
Where did you find the passwords in the README.md file?
Also I've read from a post in comp.sys.xerox from 1995 that there was an internal Xerox hack that would allow you to bypass factoring entirely and activate everything. This is the link to the post.
-blw
iblowmymind
changed the title
About Product Factoring
Not an Issue: About Product Factoring
May 22, 2021
Hello,
I'm bringing up issue #1 again since there are some bcd and mesa files related to product factoring in the 6085 VP Programming Package for XDE 6.0 (located in bitsavers's bits/Xerox/6085/6085_XDE_6.0_VP_Devel.zip). Using dmk2raw and the extractxeroxfloppy tool I was able to recover, like, 1000+ BCD, mesa source codes and symbol files. Among those are a lot of bcd files (and even some sources/interfaces) related to Product Factoring.
This is one of the files, which has some comments on how factoring works. I hope this can shed some light on how we can make a "password tool".
From this, I can understand that the software passwords in the README.md file in this repo are probably super passwords since they bring up an Analyst / Customer selection with a slightly different UI than documented in the Documentation Library PDFs for installation and activation. I can also see that there is a primary (public) and secondary (private) PF file in an installation, but they aren't visible (even with the System Folder tool in the VP 6.0 Devel Tools floppy). Since there is a similar tool for extracting files out of Xerox-formatted floppies, would it be possible to extract files off of a Darkstar hard disk image? If it would, then we could extract the PF files and inspect them.
So, to conclude, the VP libraries/interfaces and debugging symbols are available for XDE6 / VP2 on this link. It's for the 6085 however it can be ran with devhawala's dwarf emulator, but the only thing missing is XDE 6.0 itself and the Mesa Development Tools, which both of them, unfortunately, seem to be lost right now.
Thanks!
-blw
The text was updated successfully, but these errors were encountered: