Cracking iChat File Format Progress (was "Re: iChat Files")
Cracking iChat File Format Progress (was "Re: iChat Files")
- Subject: Cracking iChat File Format Progress (was "Re: iChat Files")
- From: mw <email@hidden>
- Date: Thu, 16 Jan 2003 21:05:16 -0500
Okay, so here is an update on my progress of hooking up to a private Apple
framework by using a makeshift header file from class-dumping
InstantMessage.framework in order to be able to save an iChat Chat
Transcript as a text file.
-----
I have actually gotten the program to compile, numerous times even! My first
attempt didn't work at all. On my second try (the only try that actually
displayed text in the text view) displayed about 15 pages of random Japanese
unicode characters. I think I forgot to have them be parsed that time :-).
The third try (right now), I actually separated the different needed
@interfaces from the class-dumped header file into a bunch of separate
header files. After wrestling with numerous parse errors and other nasty
crap like that for almost two hours, I got the program to compile again, and
this time, I am actually sending the retrieved data from the Chat Transcript
through what I believe to be the file loader and parser inside
InstantMessage.framework. But then I come across a problem. I get a bunch of
error messages printed to the console whenever I try to pass the data (from
inside loadDataRepresentation) to the method initWithSavedData: from the
class SavedChat (from the framework, of course). Here are the error messages
I get. I don9t know if anyone can make any sense of them since this is
probably the first time anyone has tried to crack the format of this kind of
file, but here they are:
## Component Manager: attempting to find symbols in a component alias of
type (regR/carP/x!bt)
2003-01-16 20:24:51.011 dotChat Decoder[2675] WARNING: Exception while
initializing service (null): [NOTE: this exception originated in the
server.]
Invalid parameter not satisfying: signature!=nil
2003-01-16 20:24:51.030 dotChat Decoder[2675] WARNING: Exception while
initializing service (null): [NOTE: this exception originated in the
server.]
Invalid parameter not satisfying: signature!=nil
2003-01-16 20:24:51.130 dotChat Decoder[2675] WARNING: Presentity
initWithCoder failed: there's no service named 'AIM' for ID 'j7001'
2003-01-16 20:24:51.132 dotChat Decoder[2675] WARNING: Presentity
initWithCoder failed: there's no service named 'AIM' for ID 'mac1marc'
2003-01-16 20:24:51.477 dotChat Decoder[2675] ***
-[NSPlaceholderMutableArray initWithObjects:count:]: attempt to insert nil
Just so you all know, Presentity is a class from the framework.
@interface Presentity:Person <NSCoding>
{
IMService *_service;
NSString *_id;
NSString *_firstName;
NSString *_lastName;
NSString *_email;
NSDictionary *_otherServiceIDs;
int _capabilities;
char _isBuddy;
//AddressCard *_owner;
NSData *_customPictureData;
NSDate *_idleSince;
NSDictionary *_extraProps;
}
+ presentitiesForABPerson:fp12;
- initWith
Service:fp12 ID:fp16;
- (void)release;
- (void)dealloc;
- initWithCoder:fp12;
- (void)encodeWithCoder:fp12;
- (char)isMyLogin;
- (char)justLoggedIn;
- description;
- (char)isBuddy;
- (void)setIsBuddy:(char)fp12;
- owner;
- asPresentity;
- bestPresentity;
- bestPresentityFor
Service:fp12;
- (void)setOwner:fp12;
- promoteToAddressCard;
- service;
- (char)hasName;
- name;
- firstName;
- lastName;
- (void)setFirstName:fp12 lastName:fp16;
- email;
- (void)setEmail:fp12;
- ID;
- nameAndID;
- (void)setOtherServiceIDs:fp12;
- otherServiceIDs;
- (int)compareIDs:fp12;
- tooltipString;
- balloonColor;
- extraProperties;
- (void)requestValueOfProperty:fp12;
- (char)setValue:fp12 ofExtraProperty:fp16;
- (void)setExtraProperties:fp12;
- location;
- IDWithoutLocation;
- presentityWithoutLocation;
- existingPresentityWithoutLocation;
- dependentPresentities;
- (char)isDependentOnPresentity:fp12;
- (int)capabilities;
- (void)setCapabilities:(int)fp12;
- (void)statusChanged:(int)fp12 message:fp16;
- (void)statusMessageChanged:fp12;
- (void)statusChanged:(int)fp12;
- (void)requestStatusMessage;
- nameOfStatus;
- (double)idleTime;
- (void)setIdleSince:fp12;
- (void)_postNotificationName:fp12;
- (void)_ownerInfoChanged:fp12;
- (void)_ownerPictureChanged:fp12;
- picture;
- genericPicture;
- (void)setCustomPicture
Data:fp12;
- _createCustomPicture;
- customPictureRegardlessOfBlocking;
- (void)_ownerPictureBlockingChanged;
@end
I don't actually deal with this class directly in my code. The only class I
explicitly use is the SavedChat class (subclass of the Chat class). So I am
assuming that the initWithSavedData: method does a hell of a lot of class
creation, since all of this information might actually be saved to the
transcript. Here is the SavedChat @interface:
@interface SavedChat:Chat
{
}
+ savedChatDirectory;
+ (void)reloadSavedChats;
- initWithTranscriptFile:fp12;
- initWithSaved
Data:fp12;
- (void)dealloc;
- (char)_loadFromArray:fp12;
- (char)_load;
- (char)_loadFrom
Data:fp12;
- messages;
@end
And here is the @interface for Chat (I don't know if this will be useful,
but you never know ;-):
#import "IMService.h"
@interface Chat:NSObject
{
IMService *_service;
int _style;
char _hasUnread;
char _secureXfer;
char _isInChatList;
NSString *_subject;
NSMutableArray *_messages;
NSMutableArray *_allPeople;
NSDocument *_chatDoc;
NSString *_transcript;
NSString *_address;
}
+ (void)enablePersistentChats:(char)fp12;
+ chatList;
+ (void)setViewer:fp12;
+ viewer;
- initWith
Service:fp12 style:(int)fp16;
- (void)dealloc;
- (void)release;
- (void)addToChatList;
- (char)isActive;
- (char)isChat;
- (int)style;
- (void)setStyle:(int)fp12;
- (void)_notifyStatusChanged;
- (char)hasUnreadMessages;
- (void)setUnreadMessages:(char)fp12;
- service;
- otherPerson;
- otherPeople;
- (char)fromMe;
- (char)isSecureXfer;
- subject;
- address;
- messages;
- (unsigned int)realMessageCount;
- allPeople;
- dateCreated;
- dateModified;
- description;
- chatDoc;
- (void)setChatDoc:fp12;
- (char)isOpenInWindow;
- (void)notifyOpenedByChatController:fp12;
- (void)display;
- (void)removePermanently;
- dataRepresentation;
- (char)writeToFile:fp12 ofType:fp16;
@end
So, I think I can safely assume that this has become a list-wide "project",
no? Any help from anyone with any ideas would be greatly appreciated! If we
ever figure this thing out, I'd be glad to put everyone's name who helped in
the credits.
Also, if you didn't see in the error messages above my AIM screen name, it
is mac1marc. So if you'd like to IM me so we can discuss this stuff, that
would be fine. Just make sure you tell me who you are so I don't get mad
:-D.
Well, what do you all say? Shall we all go for this?
mw
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.