Jump to content

YMSG protocol support


Recommended Posts

I haven't seen any WinHTTP object in your Y_PM_Example.au3, You said that Login and Authentication is through HTTP. I am lost, I just want to hardcode my proxy settings into the Y_PM_Example.au3 . A quick example would do.

Thanks,

geocine

Do Not Steal The Government Hates CompetitionO2JAM AutoPlayBot [|||||.............] 10%Friendster Commenter [..................] 0%Auto Message Download Percentage [|||||||||||||||||] 100%
Link to comment
Share on other sites

  • Replies 132
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

I have a quick question regarding this line on Y_PM_Example.au3 : 92

Global $socket=TCPConnect(TCPNameToIP($server),$port)

Should I modify this line in order for it to work for an HTTP Proxy. I am using an HTTP Proxy at Port 8080. Do I have to do everything what you have just said. I just want to implement it in your PM Example. Internet connection at work requires an HTTP Proxy.

Thanks,

geocine

The Examples ZIP now contains a modified version of the Y PM Example (clearly labeled) that supports an HTTP proxy.

(You WILL have to change the proxy server string!)

Note: The Yahoo Chat/Pager connection is NOT proxied in this example, only the HTTP-specific requests.

Note: if the proxy server you choose is unavailable or otherwise encounters an error during connection or its response, you WILL see a WinHTTP error message.

@ geocine, take a look at the Includes for the example, you will see WinHTTP_COM.au3, the file containing WinHTTP object functions.

YMSGLib.au3 is also included - if you search through YMSGLib.au3, you will find a few _WinHTTP_... functions being used in YMSG functions.

Calls to these YMSG functions in the example call the WinHTTP functions which interact with the WinHTTP COM Object.

These are [some of the] functions require WinHTTP requests:

_YMSG_PwToken_*
_YMSG_Auth16
_YMSG_YContent_*
_YMSG_Rooms_CatLoad
_YMSG_CaptchaLoad
_YMSG_CaptchaSend
Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Sorry for the trouble, but I get this output. I already changed the domain name ( I don't have a domain name, I used an IP)

Connecting - Please do not try to send PMs until logged in.
Connected: -1
Requesting Login Challenge...

Btw, does the proxy need to be a domain name, I am using an IP.

Edited by geocine
Do Not Steal The Government Hates CompetitionO2JAM AutoPlayBot [|||||.............] 10%Friendster Commenter [..................] 0%Auto Message Download Percentage [|||||||||||||||||] 100%
Link to comment
Share on other sites

I used my browser proxy settings and I am also using it in the real yahoo messenger client. However, it doesn't work.

Global $proxy_server='XXX.XXX.XXX.XXX:8080';   DomainName:Port

Thank you for your time anyway, any other thoughts?

Thanks

Do Not Steal The Government Hates CompetitionO2JAM AutoPlayBot [|||||.............] 10%Friendster Commenter [..................] 0%Auto Message Download Percentage [|||||||||||||||||] 100%
Link to comment
Share on other sites

I don't know if I could answer you right. I am using the same proxy settings for yahoo messenger and it is working. HTTP Proxy using IE settings. Maybe I have a problem with port 5050, do I have to change it. My current netstat output I am currently logged in at Yahoo Messenger(Real Client).

TCP stracert_5:4098 10.105.0.15:epmap TIME_WAIT

TCP stracert_5:4099 10.105.0.15:1030 ESTABLISHED

TCP stracert_5:4101 sip23.voice.re2.yahoo.com:https SYN_S

TCP stracert_5:2197 localhost:2198 ESTABLISHED

TCP stracert_5:2198 localhost:2197 ESTABLISHED

TCP stracert_5:2200 localhost:2201 ESTABLISHED

TCP stracert_5:2201 localhost:2200 ESTABLISHED

TCP stracert_5:3154 localhost:3155 ESTABLISHED

TCP stracert_5:3155 localhost:3154 ESTABLISHED

TCP stracert_5:5152 localhost:4054 CLOSE_WAIT

No 5050 here.

Do Not Steal The Government Hates CompetitionO2JAM AutoPlayBot [|||||.............] 10%Friendster Commenter [..................] 0%Auto Message Download Percentage [|||||||||||||||||] 100%
Link to comment
Share on other sites

I don't know if I could answer you right. I am using the same proxy settings for yahoo messenger and it is working. HTTP Proxy using IE settings. Maybe I have a problem with port 5050, do I have to change it. My current netstat output I am currently logged in at Yahoo Messenger(Real Client).

As I said before, the connection for Chat/Pager on port 5050 is:

+ not proxied yet in the example.

+ has nothing to do with HTTP.

- probably a different protocol than what is CURRENTLY used in Messenger. (Yahoo changes this very often.)

+ apparently is blocked there or you have another issue.

(an external server or a network gateway can do this too, not only your machine)

Since this issue doesn't seem to be related to YMSGLib, we need to stop hijacking this thread.

Here is my final suggestion for your problem though: try this script:

Global $server='cs118.msg.ac4.yahoo.com'
Global $port=5050
TCPStartup()
Global $address=TCPNameToIP($server)
ConsoleWrite('Address: '&$address&@CRLF&@TAB&'Error: '&@error&@CRLF)
Global $socket=TCPConnect($address,$port)
ConsoleWrite('Socket: '&$socket&@CRLF&@TAB&'Error: '&@error&@CRLF)
If $socket<>-1 Then TCPCloseSocket($socket)
TCPShutdown()

Please:

If you see Socket: -1 (and not a positive number there), then please ask for help connecting to the server in General Help (be sure to paste this script and it's output) because your issue isn't related to this project or even Yahoo's protocol.

Why am I giving this to you? Because if you ask a question on General Help they will want information including but not limited to:

+ What is the problem? (With this issue, you can't connect to the server)

+ What's the smallest script that reproduces the problem? (Above)

+ What do you expect the script to do? (Connect and create a socket [positive number for "Socket" in the output])

+ What does it do instead? (... Depends on when you run it - but I'm guessing "Socket" is -1 for you.)

+ What did you try to resolve this issue?

+ Etc.

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Just a quick note -

Yahoo appears to be cutting support for YMSG protocols previous to 15 or 16.

Since the current YMSGLib supports and has the most development done towards YMSG16, it shouldn't be affected by this change much, if at all.

The Chat Client Example, etc still appear to work fine.

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Hey man.. Nice script. Caught me one rainy day and with nothing else to do, so I took it and expanded a bit on it by adding encryption on the client end (using a modded version of Andreik's simple cipher) and a SAPI voice (modified from Microsoft Sam - "Bad to the Bone") and 2 distinct beeps to let you know encryption is on or off. I also added a short script to re-generate the YMSG library each time the user runs the client, in case something happened to it. Current functions I've incorporated are in the ReadMeNow.txt file (3.zip).

The encryption is simple, by the way..

EX 1:

Client 1: Output to GUI: <name>:*encrypted*:<message>

Client 1: Encrypts data using <key>(default is 'P@$$W0rd' [no quotes])

Client 1: Sends encrypted data

Client 2: Receives encrypted data

Client 2: IF HAS THE CORRECT KEY AND HAS CLIENT 1 ON LIST, unencrypts using <key> he has defined or default if not defined.

Client 2: Output to GUI: <message>(not encrypted if has client 1 on list and correct key, or double encrypted if client is on list but using wrong key, or encrypted if client not on list)

A feature I am currently working on is a button to go below the 'Refresh' button in the Pager that once clicked, opens a prompt to:

1)Enter a username,

2)Open a file (fileopendialog),

3)Encrypt the file (if encryption is toggled as 'on'),

4)Send the user defined in <1> a notice that there is an incoming file along with the name and size of the file (using delimiters that filenames cannot include such as '??' or '//' [probably double or triple the delimiter to ensure the safe breaking of data strings] delimiter,

5)The client on the receiving end for the file would take that data and break it (stringsplit) and get a message box for 'Accept file', 'Would you like to accept file ' & $__fname & ' from ' & $__ffrom & ' ?' and if they choose 'Yes', they send the client on the sending end a notice that yes, they would like to accept the file,

6)The sending client would then send the file as if it were a Yahoo PM,

7)The receiving client would receive the file data, encrypted, and once it is finished (filesize) be prompted to decrypt the file (I could allow them to do this later or only right then and there, and allow them to use a different key or only use the one stored in memory),

8)The file would be open, read, closed, processed and re-written to a new file using variuos file functions.

HOWEVER until then, here is what I have so far...

YahooChat.zip -> Password is 'autoit' (No quotes). Added password because I don't want leaks from search engines in case Crash wants to publish this for some pocket $...Or I could do it for yeh! :D

~Chris

PS: IF A MOD READS THIS, I NEED ACCESS TO THIS FORUM SO I CAN START MY OWN TOPICS. Please allow me to do so or specify the requirements to be able to do so. Please and thank you very much!!

AutoIt Stuff:

 

UDFs: {Grow}

Link to comment
Share on other sites

Hey man.. Nice script. Caught me one rainy day and with nothing else to do, so I took it and expanded a bit on it ...

You know, there's not alot of gain by ZIP'ing actual ZIP files (you can just use directories inside ZIP's)

Also, as the first page mentions -

YMSGLib.ini isn't really required, it's just to display text for common codes - it is, however, informative.

Otherwise, there are some interesting Ideas here - I'm not sure encryption is specifically relevant to YMSGLib enough to include it as an example, but feel free to either create your own Example Scripts topic for updates (Whenever you're able to - I forget if there are requirements or what) or whatever.

You might consider developing a set of "signals" or short textual codes that are specific to your client for operations during encrypted messages so that you can hide them in a font tag (as is often done with information [ex: multiple clients support INF data in chat inside font tags]) along with the encrypted information. This way you could develop invite/accept commands and such to determine if the user really does want to use encryption and if there actually is an encrypted data etc. etc.

- I'm just tossing out Ideas I've worked on before.

Elaborate Past Explanation:

Once upon a time when I wrote YahFilter, I incorporated an encrypted PM (or IM if you prefer) with an algorithm that is a little bit different than what is being used here. (bits shifted between 3 bytes incorporating an arbitrary 4th byte (say, determined from a password) before doing some further bit-level encryption)

Later, in YahFilter, I avoided using Yahoo's conferencing in lieu of an encrypted PM-relay conference [for YahFilter users] using encryption.

So, as you see - I have some interest myself in encrypted messages over PM or other mediums.

I would like if someone developed or started developing their own chat client from these examples. Frankly, the Chat Client and PM Example try to provide information and some required function, rather than being all-around useful or nice to look at.

PS:

-If you're wondering about YahFilter It's just an old YMSG Packet Filtering utility with custom options/enhancements for chat clients with and user-defined filtering rules. I'd like (someday) to convert it or rewrite it for this YMSGLib if I get the time. It is currently closed-source.

However, there is a push from certain individuals in the third-party Yahoo community to take the functionality and just add it to a chat client of my own. - but personally, I like YahELite too to much to switch.

(Note: Although if YF is closed-source, if you ask about specific parts, I'm sure I could come up with some code, the last YF version was compiled with AutoIt v3.2.12.1)

Some parts are inefficient as the code is old, the yahoo library it uses is unmaintained, and had no outside input anyway.

Links:

YahFilter's Notes (Scroll down for YahFilter's over-PM codes including the Conference event codes/explanations)

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Yeah I know there's no gain in ZIPping ZIPs (actually there's a slight loss) but I was just storing them thay way on my PC and did it without thinking.

About the YMSGLib - I'm not encrypting that. What I'm encrypting is the text the user sends out to the server BEFORE it's sent. SO instead of sending 'Hello!' to the server for it to send to the client, you instead send '¶ÏàÒÑ' (using the key: 'key'). This is just one of the things me and a friend were looking for in a program and could never find... encryption BEFORE passing the text to the server.

Also, I'm going to incorporate into this a stringinstr() to detect if one client or the other wants to send another the key and that way they'll both have the same key (stringinstr() for the detection of the string '__set.key.to:' or something similar to that) and it would automatically set the second client's key as the one received.

I've got more ideas but I don't want to post too much here - I don't mean to hijack your thread here, Crash. :D

~Chris

AutoIt Stuff:

 

UDFs: {Grow}

Link to comment
Share on other sites

Yeah I know there's no gain in ZIPping ZIPs (actually there's a slight loss) but I was just storing them thay way on my PC and did it without thinking.

About the YMSGLib - I'm not encrypting that. What I'm encrypting is the text the user sends out to the server BEFORE it's sent. SO instead of sending 'Hello!' to the server for it to send to the client, you instead send '¶ÏàÒÑŸ' (using the key: 'key'). This is just one of the things me and a friend were looking for in a program and could never find... encryption BEFORE passing the text to the server.

Also, I'm going to incorporate into this a stringinstr() to detect if one client or the other wants to send another the key and that way they'll both have the same key (stringinstr() for the detection of the string '__set.key.to:' or something similar to that) and it would automatically set the second client's key as the one received.

I've got more ideas but I don't want to post too much here - I don't mean to hijack your thread here, Crash. :D

~Chris

Yeah I know you're not encrypting the YMSGLib file, just PM text field's data - I read the script.

Just try to avoid sending low-byte-value control-characters in PM text, some of them will just not fly.

(which is why my encryption in YF was sending hex strings)

All in all, I'm sure ideas will be very interesting. I look forward to seeing an Example Scripts topic about them. :D

One of these days, I'll try to get motivated to making a more complete and useful yahoo program.

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

  • 2 weeks later...

Update 2.6c

Changes:

  • _YMSG_HeaderCreate now handles a parameter for the 2 bytes after the version, which are called the Vendor ID - however, this value does not normally ever need to be set to anything besides 0, but there are some special cases.
  • The array handled between _YMSG_PacketToArray and _YMSG_PacketFromArray now have an extra element added at index 2.
  • _YMSG_HeaderCreate now has an AllowGlobals parameter, which allows you to use the value -1 as the Version, Vendor, or SessionID to use the corresponding global value instead.

    - for this reason, the internal function __YMSG_GetGlobals used in the _YMSG_Client... functions is now deprecated and unused.

  • A bug in _YMSG_PacketFromArray has been corrected.

There are some reasons for adding this capability, which I hope to make clear in a future example.

I believe I have fixed all of the examples to be compatible with these changes.

See Here for some extra info.

Quick fixes for your YMSGLib 2.5 Scripts:

  • For Packet Arrays: Add 1 to indices that are greater than or equal to 2.
  • For _YMSG_HeaderCreate: Add a parameter 0 (or -1 if $_YMSG_VendorID=0) after the version parameter.
Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

  • 2 weeks later...

What does "Error -1" mean?

Connected: 548
Requesting Login Challenge...
Logging into Yahoo Pager...
Sent Login Response...
Logged Into Yahoo Pager!
Error: -1

I get this error minutes after I logged in.

Another thing, how do you set status as available? Is it this?

TCPSend($socket,_YMSG_Client_Visible(1))
Do Not Steal The Government Hates CompetitionO2JAM AutoPlayBot [|||||.............] 10%Friendster Commenter [..................] 0%Auto Message Download Percentage [|||||||||||||||||] 100%
Link to comment
Share on other sites

What does "Error -1" mean?

I get this error minutes after I logged in.

Error -1 in *that* situation most likely informing you that the connection is not valid. (I guess)

Does this error always occur for you after logging in and waiting?

Which example did you encounter this in? is it an up-to-date example?

If this is your own script, and you updated to YMSGLib 2.6c, did you follow the "Quick Fixes" I posted?

If this is the case, you may try one of the examples and compare it with your script if it returns different results.

However, the socket could also be invalidated if Yahoo decided to close the it. (which does happen)

The examples need to have the correct "pings" added to them - but exactly what the 'correct' ones are is a little unclear at the moment.

This generally doesn't seem to affect anything within medium spans of time.

Another thing, how do you set status as available? Is it this?

TCPSend($socket,_YMSG_Client_Visible(1))
There are actually two steps to setting your status to available:

First, if you're invisible you must set yourself to visible:

TCPSend($socket,_YMSG_Client_Visible(1))

Then you must set your away-state:

Local $iAIndex=4
  ; Available is currently the 4th (0-based) element in $_YMSG_AwayStatus
  ; it may be wiser to actually search for this element by the AwayState value (Available=0) in case of later changes.
  
  Local $iState=$_YMSG_AwayStatus[$iAIndex][0]; int  AwayState
  Local $iAIcon=$_YMSG_AwayStatus[$iAIndex][1]; int  StatusIcon (no better name)
  ;Local $fAText=$_YMSG_AwayStatus[$iAIndex][2]; bool HasCustomText - available doesn't
  Local $sState=$_YMSG_AwayStatus[$iAIndex][3]; str  StatusName
  Local $sAText=''; this would be your custom text - if this was a custom away-state, but it isn't.
  
  ConsoleWrite("Setting Away-State to: "&$sState&@CRLF)
  _TCPSend($socket,_YMSG_Client_Away($iState,$sAText,$iAIcon))

... you might end up doing something like this:

SelectAway($socket, 4)

Func SelectAway($socket, $idx)
    Global $AwayState_Last
    If $idx>=0 Then
        Local $idxx=UBound($_YMSG_AwayStatus)-1
        If $idx<=$idxx Then
            Local $iState=$_YMSG_AwayStatus[$idx][0]
            Local $iAIcon=$_YMSG_AwayStatus[$idx][1]
            Local $fAText=$_YMSG_AwayStatus[$idx][2]
            Local $sState=$_YMSG_AwayStatus[$idx][3]
            Local $sAText=''
            If $AwayState_Last<>$idx Then
                $AwayState_Last=$idx
                If $fAText Then $sAText=InputBox('Away Message','Please input an away message for this '&$sState,'')
                ConsoleWrite('Setting new Away-State: ' & $sState )
                If StringLen($sAText)>0 Then ConsoleWrite('"'&$sAText&'"')
                ConsoleWrite(@CRLF)
                If $iState=12 Then; 12 is Invisible - so disable visibility!
                    _TCPSend($socket,_YMSG_Client_Visible(2))
                Else
                    _TCPSend($socket,_YMSG_Client_Visible(1))
                EndIf
                _TCPSend($socket,_YMSG_Client_Away($iState,$sAText,$iAIcon))
            EndIf
        EndIf
    EndIf
EndFunc
Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

As I asked the previous user [with no response] , what example are you using? (or all of them? or any of them?)

If you aren't using an example, could you post some code that reproduces this issue?

I need information about how to reproduce the issue.

I can login fine with the PM and Chat examples:

Connecting - Please do not try to send PMs until logged in.
  Connected: 308
  Requesting Login Challenge...
  Logging into Yahoo Pager...
  Sent Login Response...
  Logged Into Yahoo Pager!
Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

  • 2 weeks later...

If I don't send or receive any message in 2 hours timeframe, I get same "Error -1". I don't know the reason but I got it many times. Untill now I tried lastest versions from Y_PM_Example and YChatClient_Example. YMSGLib version is 2.6c.

Link to comment
Share on other sites

This is the message I get in console before error:

>>> IN
1 byte sig[4] 0 YMSG
2 byte ver[2] 1 16
3 byte vid[2] 2 0
4 byte len[2] 3 8
5 byte typ[2] 4 0054
6 byte sta[4] 5 -1
7 byte sid[4] 6 004EA3A9
8 Packet Data 7 66À€52À€

Error: -1
Edited by iulica76
Link to comment
Share on other sites

This is the message I get in console before error:

>>> IN
 1 byte sig[4] 0 YMSG
 2 byte ver[2] 1 16
 3 byte vid[2] 2 0
 4 byte len[2] 3 8
 5 byte typ[2] 4 0054
 6 byte sta[4] 5 -1
 7 byte sid[4] 6 004EA3A9
 8 Packet Data 7 66À€52À€
 
 Error: -1

Very odd, - the most obvious information here is that you are receiving an Authorization rejection error with code 52. (not documented)

What seems odd to me is that you would get an Authorization error long after authorization is already complete.

Although, I've been seeing reports from other Yahoo clients (YahELite, etc) of similar errors after a couple hours - so.... yeah.

If you can PM and chat for a couple hours before this occurs, I'd say just reconnect.

I'll try it out and see if I can reproduce similar results after a couple hours.

Hopefully I can track down the issue with this, if not - it may just be Yahoo.

--------------------------------------------

In other news: I am currently working on completing YMSGLib 2.7c,

in which I have modified the _YMSG_ConfigLogin function to retrieve the correct data via TCP rather than WinHTTP. [didn't really work with WinHTTP since there was a redirect reponse that contained the desired cookies]

I also want to see if I can eliminate dependency on WinHTTP of the functions related to the Yahoo Insider server (Chat Categories, Room listings, etc.) and the CAPTCHA load/submit functions.

The only place I won't be able to eliminate WinHTTP is the PwToken_Get and PwToken_Login functions, which require HTTPS. (these are used in the standard Yahoo Pager login for YMSG15 and 16) - that is, unless there's another option for HTTPS available.

...

The ConfigLogin function can be used to login and retrieve cookies from HTTP needed for use of the newer YMSG "Cookie Authorization" that was discovered.

Important notes about the Cookie Auth:

  • allows you to login to YMSG only with your username and the main two Yahoo cookies: Y and T.
  • requires no challenge request or response - you can simply connect and send your info.
  • The cookies, once retrieved, can be cached and reused near indefinately. (They supposedly expire in 2037)
  • The cookies will be invalid once major account changes have occured, such as changing your password.
  • Because of the nature of the "Config Login", specific Yahoo error codes will not be retrievable.
Because of this, you can make one HTTP request to get cookies, cache them, and be able to login much more instantly than the "PwToken/Hash Login", in successive attempts.

...

I currently have a working Yahoo client that can use either the PwToken or Cookie Login, and will be much more comprehensive than the examples shown here once it is complete. However, I will not be releasing it until both it and YMSGLib 2.7c are more complete.

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Update 2.7c

Update info:

; Title .........: YMSG Library for AutoIt
; Version .......: 2.7c
; Updated .......: A number of functions now use TCP functions rather than WinHTTP:
;                  | _YMSG_ConfigLogin - now works to acquire Y and T cookies for valid logins.
;                  | _YMSG_CheckOnline
;                  | _YMSG_YContent_Load
;                  | _YMSG_CaptchaSend - which now returns the -2 error if the CAPTCHA has expired.. (0 reserved for invalid responses)
;                  | _YMSG_CaptchaLoad - "
;                  | | (Credit goes to ProgAndy for the _URIEncode functions.)
;                  The _YMSG_PwToken_* and _YMSG_ValidateFields functions will not change as they require HTTPS.
;                  _YMSG_StripFormatting will now strip several more rarely used escape-codes including esc[lm, esc[*m and esc[%m

As the above text shows, I am using ProgAndy's implementation of the URIEncode function.

YMSGLib.INI update:

Added some text for some unverified YMSG warning codes (the negative ones) and a couple of the previously missing error codes. (also unverified)

Minor WinHTTP_COM.au3 update:

WinHTTP Errors that occur no longer force you to view that stupid error message, you can change $_WinHTTP_ShowErrorMessage to false to disable it.

Additionally, if you use your own error handler, you can access the error stage and current request via $_WinHTTP_Stage and $_WinHTTP_Request.

Still working on the client that I promised.

Edited by crashdemons

My Projects - WindowDarken (Darken except the active window) Yahsmosis Chat Client (Discontinued) StarShooter Game (Red alert! All hands to battlestations!) YMSG Protocol Support (Discontinued) Circular Keyboard and OSK example. (aka Iris KB) Target Screensaver Drive Toolbar Thingy Rollup Pro (Minimize-to-Titlebar & More!) 2D Launcher physics example Ascii Screenshot AutoIt3 Quine Example ("Is a Quine" is a Quine.) USB Lock (Another system keydrive - with a toast.)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...