Sign in to follow this  
Followers 0
crashdemons

YMSG protocol support

133 posts in this topic

#1 ·  Posted (edited)

NOTICE: As Yahoo has terminated Yahoo Chat, I am no longer maintaining this code. Thanks.

This particular script provides many, many functions and definitions for working with Yahoo Cookies, Pager, Chat, CAPTCHA, etc.

Current Version: YMSGLib 3.4

NOTE: Do not ask me for help with "Booters", Flooders, Bots, or anything to abuse other users.

License:

YMSGLib.au3 and the small include file for WinHTTP, WinHTTP_COM.au3, are licensed under WTFPL version 2 (alternative link), a GPL-compatible and FSF-approved license. The entire license can be viewed in either source file. If the 'wording' is not acceptable to this forum, I will gladly write a license just for this purpose.

Downloads:

YMSGLib.au3

WinHTTP_COM.au3

Optional Downloads:

YMSGLib_INI.zip

YMSGLib_Examples.zip

Currently included Examples:

Cookie Decoder (some results need verification)

Simple Login and Console output for buddylist/packet data.

Simple Chat Client (Pager Login/PM/Captcha/Chat/Roomlist support)

*Simple Login/PM Pager Client (and HTTP Proxy example copy)

*Simple Roomlist example

Account Existence checker

(* = Requested Script)

Technical Requirements:

Base64 Support:

Base64.au3 (Author: Ward) (Needed for: Cookies, Auth16)

(or alternatively _Base64.au3 by Mikeytown2/blindwig)

MD5 Support:

Crypt.au3 (Author: monoceres)

(or alternatively MD5.au3 by Ward) (Needed for: Auth16)

(or alternatively Hash#[DLL].au3 by Ward)

(or alternatively MD5.au3 by SvenP/Frez Systems Ltd.)

WinHTTP Support:

WinHTTPRequest Object (Needed for: Token Login/ValidateFields Support)

(WinHTTP_COM.au3 as supplied above)

Data Object Support:

ADODB.Stream Object (Needed for: Reading of WinHTTP Data)

YMSGLib Updates:

2.1 - Validation/Status Check functions; LibRequire edit

2.2 - fixed a bug in _ValidateID

2.3 - moved textual information to YMSGLib.ini, Changed Calls to Executes, added (Packet|Status|Field|List)GetName functions.

2.4 - Added Visibility and Away State packet functions, added some documentation

2.5 - VerifyContact fixed; applicable pager packets updated with the destination-network parameter. ($iService)

N/A - Small Include Filename Switcheroo. (Minorly Breaking)

2.6 - Information about the two bytes following the "ver" has been revealed - some ability has been added here, but this is also a script-breaking change.

2.7 - Many functions requiring HTTP now do not rely on WinHTTP; added some replacements to _YMSG_StripFormatting.

2.8 - Fixed a bug in HTTP transfers concerning binary data

2.9 - Added 3 types of ping packets

3.0 - Base32-int conversions and internal int-string functions (usable for Y64-ints)

3.1 - Mobile / SMS functions (thanks to Lost_Protocol, WickedCoder for information)

3.2 - URL arguments for PwToken and ValidateFields functions are now properly escaped.

3.3 - Additions and changes from observation of Yahoo Messenger 10 (see post)

3.4 - Captcha modifications

Works Cited:

Yahoo SMS Specification

LibYahoo2 - YMSG9

The YahELite chat client. (through observation and analysis of activity)

Observation and review of the source code for various chat clients (Gaim [now Pidgin], etc.)

In-Depth Analysis of .... 6 Jan 2008. XSSed.com (Cookie Info)

A Post-mortem of Yahoo! Account Security. (Cookie Info etc.)

(More official source citations not available as YMSG is not an officially published protocol; some sources posted in subsequent replies)

To Do:

N - Rewrite MD5 and B64 functions to look decent (perhaps array/loop)

T - Update the AuthResponse functions to allow status' other than 12 (Invisible)

H - Update example scripts for compatibility

H - Document all YMSGLib function return values

H - Add Away-State and Visibility support to the Chat-Client example

E - Verify the timestamp integer values in the cookie decoder

H - Add full hierarchy processing for the buddylist structure.

H - Change out the Chat Client Example's buddylist with something decent.

E - Add BuddyIcon/Avatar upload support to YMSGLib

B - Make all functions work perfectly with the new HTTP transfer functions (B; some functions require HTTPS)

P - Add accept/deny buddy responses to YMSGLib and processing to the Chat Client

P - Add cross-service support to VerifyContact, BuddyAdded, etc.

* (B=Blocked by an issue/not possible, P=Pending testing, H=potential Headaches, T=subject to Time constraints, E=needs a working Example/documentation, N=None)

/me falls asleep on keyboard

Edit: Corrected written version number in post

Edit: Corrected unterminated strikeout text

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.)

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Here is a screenshot of the cheaply made test-client in Yahoo's Computers Lobby:1

- At least it gets into chat! ^_^

I did not spend alot of time developing the client, as the purpose was to simply make an example for YMSG functions (NOT to be pretty or have alot of utility)

Screenshot

Posted Image

Here is a screenshot of the cookie decoder (sorry for all the marked-out information, just protecting my account)

Screenshot

Posted Image

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.)

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Updated YMSGLib and the Chat Client Example

YMSGLib (v1.3c) now supports field counts, field reading by occurrence and corrected a typo in the YMSG_Client_PM function.

The Chat Client now supports a userlist, PM windows, and strips fonts and formatting out.

(until I decide that I want an HTML/RTF screen instead of a textbox)

The Join window now has options to Join/Leave/End Chat (roomlist selector will be added in a future update)

Additionally there is now a Chat Room button under the userlist - you can click it to start chat, once chat is started it serves as a quick way to bring up the Join/Leave/End window - allowing you to quickly switch rooms or leave the current room, or stop chat.

I have updated the above screenshot of the client

Edit: Fixed missing Open PM button in example. (not shown in SS)

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.)

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Nice work. I tried some time ago what you already done. Where you find documentation about this?

EDIT: Your client is a little too big to be easy to read. Could you make a lite version, just with some features like:

- a simple GUI to login

- a simple GUI to can press a button to send a PM (without chatroom)

This should be a nice start for everyone. I don't have so much time to read all your code but a lite version should be very interesting. From me 5 starts.

Edited by Andreik

When the words fail... music speaks

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Nice work. I tried some time ago what you already done. Where you find documentation about this?

I have been using Yahoo chat for a long time - when I started using the YahELite chat client I studied the output of the packet debug window compared to packet logs I had collected via sniffer - later I investigated the source of similar clients and libraries on the internet.

However, most of the open information was somewhat outdated, but still valid when taken with a grain of salt.

Eventually I had well collected information on the packet structure, common packets, common field #'s and their values.

Not to mention that the fact that YahELite Beta versions had a /pkt command allowing you to input custom packets as cleartext and you could use the Debug window to watch what was outputted - this also moved along the comprehension of what was going on.

Since documentation is openly limited on YMSG, I would suggest looking everywhere, including source code websites and everything else.

Links:

YMSG9

Notes that may be helpful to you:

ylogin.txt

YMSG16.TXT

Yahoo Error codes list (as taken from the registration server)

Yahoo Room Category-List (en-us)

Yahoo Category 1001 Room-List (en-us)

Could you make a lite version, just with some features like:

- a simple GUI to login

- a simple GUI to can press a button to send a PM (without chatroom)

The below script is as simple as I can make it.

For the sake of simplicity, all PM's are sent and received in the same window.

Y_PM_Example.au3 is now in the Example ZIP (first post)

I would love to login with one function call, but that's not how the YMSG16 login works.

(AuthRequest Out, AuthChallenge In, AuthResponse Out, AccountInfo In - if the login all goes well)

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.)

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Update: YMSGLib 1.5c

These changes to YMSGLib should not cause any compatibility breaks with your current programs.

Added two functions:

_YMSG_PwToken_Get(ByRef $iError, ByRef $sPwToken, ByRef $sPartnerID, $sUser,$sPass,$sChallenge='')
_YMSG_PwToken_Login(ByRef $iError,ByRef $sCrumb,ByRef $sYCookie, ByRef $sTCookie, Byref $sExpire, $sPwToken)

These functions were added so that your programs can request this information easily and separately.

The _YMSG_Auth16() function now uses the two above functions for simplicity.

Three internal functions were added to allow different MD5 and Base64 Libraries to be used:

__YMSG_MD5bin($str)
__YMSG_B64EncodeStr($str)
__YMSG_B64DecodeBin($str)

Because of the above added functions, the Auth16 function supports two MD5 Libraries and the Y64 function supports two Base64 libraries.

You may now use any of these libraries for MD5:

MD5.au3 (preferred)
                  Author: Ward
                  Function: _MD5($Data)
                  Return: Binary
             MD5.au3
                  Author: SvenP / Phil Fresle / Frez Systems Ltd.
                  Function: MD5($sMessage)
                  Return: Hex String

You may now use any of these libraries for Base64

Base64.au3 (preferred)
                  Author: Ward
                  Function: _Base64Encode($Data, $LineBreak = 76)
                  Function: _Base64Decode($Data)
                  Return: String
             _Base64.au3
                  Author: blindwig / Mikeytown2
                  Function: _Base64Encode($s_Input, $b_WordWrap='', $s_ProgressTitle ='')
                  Function: _Base64Decode($s_CypherText, $s_ProgressTitle = '')
                  Return: String

Additionally, if one of these functions are not present when required, you will see a critical error messages before your program exits.

Update: Cookie Decoder Example

The cookie decoder has been shortened because of the two new PwToken functions added to YMSGLib.

The cookie decode now also requires YMSGLib v1.5c or higher.

Sidenote: the WinHTTP.au3 file included has also been updated

If the WinHTTP/ADODB/Error objects are already initialized, it will not attempt to re-assign them.

The Login/PM example originally posted above is now in the Examples ZIP.

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.)

Share this post


Link to post
Share on other sites

This was a hard work to study outputs from others yahoo clients but with great results. Thanks for sharing.


When the words fail... music speaks

Share this post


Link to post
Share on other sites

Update: YMSGLib v1.6c

Added functions for Yahoo Room-List support

Added a version requirement function that your client programs can use in the future to specify which version of YMSGLib is required (either "exactly X" or "equal to or greater than X")

NOTE: At this time hierarchy detection for the room-list categories is not available.

Addition: Room List GUI Example

This example shows the categories and allows you to select them to display the contained lobbies, as well as select specific lobbies.

Update: Chat Client Example

The Join window now has a button ["..."] beside the room input box which will allow you to open the room-list shown in the above addition, but when you select a lobby the name will return to the Join Room input box, allowing you to find and join a room easily.


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.)

Share this post


Link to post
Share on other sites

Is there any way, after connecting to yahoo to get your friends list, to not be force to write the ID everytime for user who want to PM?


When the words fail... music speaks

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

Is there any way, after connecting to yahoo to get your friends list, to not be force to write the ID everytime for user who want to PM?

Yes, when you first log into yahoo, Yahoo transmits your remote buddylist and ignore list.

You should (and I need to check this) be able to read them in much the same way that I read the room's userlist - a list of fields.

It is conceivable that I could create a GUI with a ListBox containing the usernames on your buddylist so that you can quickly open a PM/add/remove them.

Of course - this will make the simple examples a bit longer.

- I am also surprised more people haven't openly taken interest in this project, seeing as they can create their own Yahoo clients with what is shown here in the examples.

Edit: Accidentally typed Roomlist instead of Userlist in this post

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.)

Share this post


Link to post
Share on other sites

#11 ·  Posted (edited)

- I am also surprised more people haven't openly taken interest in this project, seeing as they can create their own Yahoo clients with what is shown here in the examples.

Chances are people commonly don't know what "YMSG Protocol" is...as in the thread tittle. Where "Yahoo! Messenger Client Example in AutoIt" might draw more attention?

<CLINK> <CLINK> Two cents deposited. :) Rawk ON! MOAR Y! PØWER!

[EDIT]: whøøps, "YMSG protocol support, Yahoo Chat, Cookie reading, etc."

All I noticed was Thread tittle as: YMSG Protocol Support on the Thread Header.

Edited by Gargy

01000001 01110101 01110100 01101111 01001001 01110100 00100000
An immortal object must be copied, so that we get a mortal copy of it, since we try not to destroy immortal objects.

Share this post


Link to post
Share on other sites

C:\Documents and Settings\Thuong Tin\My Documents\YM\YMSGLib.au3(111,33) : ERROR: _Hash(): undefined function.

$sHash=Call('_Hash','MD5',$str)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

C:\Documents and Settings\Thuong Tin\My Documents\YM\YMSGLib.au3(113,26) : ERROR: MD5(): undefined function.

$sHash=Call('MD5',$str)

Share this post


Link to post
Share on other sites

i have problem with your example, data received from Yahoo has been showing duplicate

Posted Image

Share this post


Link to post
Share on other sites

@Undefined functions -

- I can not think of any other way to conditionally check for a function's existance

- so using a call to a function that does not end the script when an error is found is essential. - that error message is intended to occur. - try disabling Au3Check.

- To my knowledge, Call() does not create any critical errors that end execution when there is a problem.

- The other option is to use Execute() in a similar manner, but that may create higher inefficiency.

@Double PM's -

- Depending upon what server you and a buddy are on, you may receive a secondary message. (Yahoo DOES actually send that duplicate.)

I will look at ways of discarding the secondary message when I update the client.


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.)

Share this post


Link to post
Share on other sites

#15 ·  Posted (edited)

After some studying of what was going on I noticed that the duplicate/resent PM's received have a 450 field with the value "1", while non-resent PM's either contain "0" or do not have this field at all.

I have updated the Chat Client example and the PM example to discard PM's with this field set to 1.

(hopefully this removes unintentional duplicates for the vast majority)

I have also added a limited buddylist to the Chat Client example. (click [Pager] to the left of that chat input box)

(Not added to the PM Example - it took long enough to debug once!)

YMSGLib 1.9c

Added some pager packets.

Changed some packet processing (non-breaking)

Added a packet length function so that the length can be retrieved before processing.

^ Because of some of the above changes, the Chat Client and PM Example now have some better checking of whether a partial packet was received.

PS:

I know the buddylist isn't EXACTLY what you hoped for - but it's a bit difficult to save the hierarchy of all of the buddy groups - maybe that will be added later.

You can double-click on the buddylist to open a PM (or on ignorelist to un-ignore a user)

You can now double-click in the userlist of the Chat Client to open a PM also.

/me passes out from exhaustion. :)

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.)

Share this post


Link to post
Share on other sites

Duplicate (resent) PM droppedthuongtin88 <To: yh_vnn>: Yeah uki

Duplicate (resent) PM dropped

Thanks you!

Share this post


Link to post
Share on other sites

Yes, when you first log into yahoo, Yahoo transmits your remote buddylist and ignore list.

You should (and I need to check this) be able to read them in much the same way that I read the room's userlist - a list of fields.

It is conceivable that I could create a GUI with a ListBox containing the usernames on your buddylist so that you can quickly open a PM/add/remove them.

Of course - this will make the simple examples a bit longer.

- I am also surprised more people haven't openly taken interest in this project, seeing as they can create their own Yahoo clients with what is shown here in the examples.

Edit: Accidentally typed Roomlist instead of Userlist in this post

I should be able to can read buddylist and ignore list but I don't know when yahoo server send this from my client. You write YMSGLib, you should check where this thing happen. A little example would be great. :)


When the words fail... music speaks

Share this post


Link to post
Share on other sites

#18 ·  Posted (edited)

I should be able to can read buddylist and ignore list but I don't know when yahoo server send this from my client. You write YMSGLib, you should check where this thing happen. A little example would be great. :)

The Buddylist and IgnoreList occurs in packet 00F1, where fields 302 and 303 mark the beginning and ending of a list (which one chosen by the number in these field's data) and fields 300 and 301 mark the beginning and end of list items.

These are arranged so that if the field order is 302,300,7,301,303 then the field 7 is in this particular item which is also in a list.

The hierarchy of the real buddylist/etc. is somewhat more complex:

List:BuddyGroups( Item:BuddyGroup( Field:GroupName & List:Buddies( Item:Buddy(Field:BuddyName), ... ) ), ... )
List:Ignores(Item:Ignore(Field:BuddyName), ... )
List:BuddyStats(Item:BuddyStat(Field:BuddyName & Field:AwayState &? Field:AwayText), ... )

So pretty much the idea is that Lists contain Items, Items contain Fields and/or Lists.

Here is an example that outputs the buddy/ignore information to the SciTE console in correct hierarchy.

(Note: " Case '00F1', '00F0' " is where the fun starts )

-Attachment Removed, see Examples in first post-

(Note: you'll have to close it via the tray icon)

Example output:

StartList(BuddyGroups) {
    StartItem(BuddyGroup) {
        GroupName(SomeGroupNameHere)
        StartList(Buddies) {
            StartItem(Buddy) {
                BuddyName(UserXXX3823)
            } EndItem(Buddy)
            StartItem(Buddy) {
                BuddyName(UserXXX0725)
            } EndItem(Buddy)
        } EndList(Buddies)
    } EndItem(BuddyGroup)
    StartItem(BuddyGroup) {
        GroupName(SomeOtherGroup)
        StartList(Buddies) {
            StartItem(Buddy) {
                BuddyName(Bob349fc_76fsd)
            } EndItem(Buddy)
        } EndList(Buddies)
    } EndItem(BuddyGroup)
} EndList(BuddyGroups)
StartList(Ignores) {
    StartItem(Ignore) {
        BuddyName(spammer301d3asd)
    } EndItem(Ignore)
    StartItem(Ignore) {
        BuddyName(flooderds8d8111s)
    } EndItem(Ignore)
} EndList(Ignores)
StartList(BuddyStats) {
    StartItem(BuddyStat) {
        BuddyName(UserXXX3823)
        AwayState(99)
        AwayText(Away)
    } EndItem(BuddyStat)
} EndList(BuddyStats)

Which actually looks like this if you had seen it as fields (without indention; where «» is a field delimeter)

302«»318«»
    300«»318«»
        65«»SomeGroupNameHere«»
        302«»319«»
            300«»319«»
                7«»UserXXX3823«»
            301«»319«»
            300«»319«»
                7«»UserXXX0725«»
            301«»319«»
        303«»319«»
    301«»318«»
    300«»318«»
        65«»SomeOtherGroup«»
        302«»319«»
            300«»319«»
                7«»Bob349fc_76fsd«»
            301«»319«»
        303«»319«»
    301«»318«»
303«»318«»

...

A real headache to do by hand, with all this encapsulation.

For YMSGLib:

_YMSG_FieldsToArray($aFields,$sData) outputs an array of fields to $aFields in the following format (it IS just a stringsplit :party: )

[0]=number of elements

[1]=field number

[2]=data of above field

[3]=field number(2)

[3]=data of above field

...

you can use _YMSG_FieldArrayGetValue($aFields,$iFieldNum,$iOccurrence) to get the data of a specific field, but I would suggest against it for a list, since this function searches the fields array.

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.)

Share this post


Link to post
Share on other sites

#20 ·  Posted (edited)

@ ThuongTin

The script you posted appears to use YMSG 102, the results should be duplicable, but it won't be exactly simple; I'll work on it at my choosing - no promises.

Currently, I support YMSG16, the differences between YMSG16 and YMSG102's login is the part that worries me the most, but I shall see what I can do.

However, it may be possible to have the same results on YMSG16 as well, but I need test this before jumping to conclusions.

I first need to discern exactly what is happening.

Do you have any documentation for these pages in english? (I'm not multilingual, in the human sense.)

(Index.php is not in English - or at least the actual display text isn't)

As I stated before, don't get in any hurry to see results.

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.)

Share this post


Link to post
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
Sign in to follow this  
Followers 0

  • Similar Content

    • nss
      By nss
      Hi all,
       
      I am making a program in which I use Bass audio library (with the wrapper for autoit that I found here on forums I think) because of its support for dx effects.
      My problem, though, is that when effects as reverb or echo/delay are added, the channel length is not extended as to fit the tail of the effect, so if the file was really short, you wouldn't even hear the reverb at all.
      I've tried setting the  buffer parameter even to 60k ms, updating the channel length to 60k ms, but nothing makes it so that the effects aren't being cut off.
      I've heard that I could add silence manually to wave files by adding the chr(0) characters, but haven't had any luck doing that, either.
      What I'm doing:
      initialize bass use streamCreateFile to load the wave file with the fx flag and length parameter set to 60000 set the config buffer to 60000 use channel set fx to add dx8 reverb use channel play to play the sound use bass update to update the length to 60000  
      I even tried having only silence in one wave file and tried joining two wave files together, but that didn't work either.
       
      Any help would be very much appreciated.
    • rcmaehl
      By rcmaehl
      A UDF to connect to IRC using TCP Functions, as well as perform actions once connected.
      WANTED: Technical Writer able to create / maintain a helpfile (.chm) using the Autoit helpfile layout for an negotiated rate.

      Notes:
      Originally created by Chip.
      UDF Headers updated compared to old script.
      Error and Parameter Handling updated compared to old script.
      If you need to bypass the RFC compliance of this UDF, use _IRCRaw.
      The majority of the old functions have been modified. It will break most, if not all, scripts using the old UDF.
      These commands should work on every server following either RFC 1459 (legacy) or RFC 2812 (preferred).
       
      Potential Uses:
      IRC Chat Clients
      Chatroom Integration for software
      IRC Bots for Channel / Server Administration
      IRC Bots for Games such as Hangman, Mafia, and WereWolf
      Remote Administration without having to setup your own AutoIt server


      Functions:
      _IRCChannelInvite
      _IRCChannelJoin
      _IRCChannelKick
      _IRCChannelPart
      _IRCChannelTopic
      _IRCConnect
      _IRCDisconnect
      _IRCGetMsg
      _IRCMultiMode
      _IRCMultiSendMsg
      _IRCRaw
      _IRCSelfOper
      _IRCSelfSetNick
      _IRCSelfSetStatus
      _IRCServerPing
      _IRCServerPong
      _IRCServerTime
      _IRCServerVersion
       
      Extra Functions:
      _IRCReplyTo (IRCExtras.au3)
      _IRCStripSpecial (IRCExtras.au3)
       
      Downloads:
       
      Additional Links:
      Chips' Old UDF Topic:

       
      DISCLAIMER:
      While these downloads are more stable than the ones above, I do not have time to thoroughly test all functions and variable entries. If something doesn't work as expected or gives you an error please check @error and @extended variables then create a reply to this topic.

      Changelog:
      09/06/2016: IRC.au3 Fixed : Updated Headers to UDF-spec (- instead of =) _IRCGetMsg Fixed : Incorrect Return Value On Error _IRCStripSpecial Added : Better documentation of Flags _IRCMultiSendMsg Added : Better documentation of Flags _IRCMultiSendMsg Fixed : Max Message Size based on https://forums.unrealircd.org/viewtopic.php?t=6811 Updated all files to consider themselves a standalone install by default All Functions that didn't Return anything now return Number of bytes sent Slight Performance Improvements by using Parameter Gating instead of Single Input Single Output 07/21/2016: Example.au3 Fixed : Includes Example.au3 Renamed: IRC_Example.au3 IRC.au3 Changed: Minor Performance Improvements 04/18/2016: IRCConstants.au3 Updated: A Ton of New Constants added IRCMultiSendMsg Added : Color Example Increased TCP Timeout in all Examples 04/13/2016: CUI.au3 Updated: Errors now output to Error Stream in Console (C/G)UI.au3 Fixed : Userlists (FOR REAL THIS TIME) by being sure to get the current channel Removed: Duplicate Constants File Include Removed: Local Declaration inside of While loop for Performance Updated: TCPTimeout Increased Updated: $sTemp renamed $sStrip for Readibility Example.au3 Updated: TCPTimeout Increased GUI_Client.au3 Renamed: GUI.au3 _IRCStripSpecial Added : Parameter Checking Updated: Documentation _IRCMultiSendMsg Added : Additional flags for Message Type (POSSIBLY SCRIPT BREAKING if using $_bTrim!) Updated: Example to show new flags Updated: Increase Max Message Size from 368 To 436 04/09/2016: IRC.au3 Updated: All Documentation Added : Now has a Constaznts file _IRCConnnect Fixed : Now PROPERLY returns any errors _IRCGetMsg Removed: $_iChars parameter since it gets one packet at a time and parsing is easier _IRCReplyTo Fixed : Now properly returns username _IRCStripSpecial Added : Now uses Constants File All files are now in a single ZIP Includes 2 basic IRC "clients", a CUI, and a GUI 07/15/2015: Example.au3 Added : Improved Debugging   Updated: All Space Indents to Tab Idents   IRC.au3 Removed: Exception skipping @error = -1 in IRCGetMsg() as 3.3.14.0 fixed it 07/15/2015: Example.au3 Added : Ping Timeout Fixed : Userlist clipping of last user IRC.au3 Fixed : IRCGetMsg() Hang 07/08/2015: Example.au3 Fixed : User Lists   Fixed : Nickname now switches to backup nickname if first choice is already in use IRC.au3 Added : UDF Index Added : #include-once Updated: All Functions updated to Single Entry, Single Exit Updated: Now passes Au3Check on -q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7 01/15/2015: Example.au3 Fixed : Ampersand channels causing a crash 12/20/2014: Example.au3 Fixed : Nicks not updating on all channel lists when a user changed their nick Fixed : Nicks not deleting on all channel lists when a user quits the network 12/19/2014: Example.au3 Added : User lists Added : Channel lists Added : Bot keeps track of own nick Added : Secondary nick in case first nick choice is in use. Added : Extremely Minor performance improvements _IRCConnect Added : Improved parameter checking _IRCGetMsg Updated: Now only retrieves one packet by default (MAY be script breaking) 10/14/2014: Example.au3 Added : Shutdown TCP on exit Fixed : $Recipient now gets the actual Recipient instead of the 3rd message Added : Now exits when told to quit. IRC.au3 Added : Improved Error Reporting (Includes @extended on error) _IRCDisconnect Added : Close Socket on Disconnect _IRCStripSpecial Added : Improved Color Stripping 09/28/2014: _IRCConnect Fixed : Checking if Mode was blank. _IRCGetMsg Fixed : Spamming of 0 and incorrectly thinking there was an error. 09/28/2014: IRC.au3 Fixed : All functions now return when errors are encountered instead of continuing _IRCConnect Added : Now returns an error if optional password failed to send _IRCGetMsg Added : Now returns an error if it failed to receive a custom amount of data _IRCServerVersion Fixed : Capitalized "Version" 09/26/2014: Example.au3 Fixed : Pings not ending with @CRLF IRCExtras.au3 Added : _IRCStripSpecial(), Cleans special characters sometimes seen in IRC 09/24/2014: Example.au3 Added : Checking for PrivMsg Fixed : Infinite loop if you removed _IRCDisconnect Updated: Bot now disconnects when receiving "!quit" instead of automatically Discontinuted BETA UDF project. 04/20/2014: IRCExtras.au3 Added : Additional IRC Functions _IRChangeNick Renamed: _IRCSelfSetNick (SCRIPT BREAKING! Fix: Replace _IRCChangeNick with _IRCSelfSetNick) _IRCGetMsg Fixed : Now no longer Splits Packets if Default option is used _IRCChannelInvite Added : Invites a User to a Channel _IRCChannelKick Added : Kick a User from a channel _IRCJoinChannel Renamed: _IRCChannelJoin (SCRIPT BREAKING! Fix: Replace _IRCJoinChannel with _IRCChannelJoin) _IRCMode Renamed: _IRCMultiMode (SCRIPT BREAKING! Fix: Replace _IRCMode with _IRCMultiMode) _IRCOper Renamed: _IRCSelfOper (SCRIPT BREAKING! Fix: Replace _IRCOper with _IRCSelfOper) _IRCPartChannel Renamed: _IRCChannelPart (SCRIPT BREAKING! Fix: Replace _IRCPartChannel with _IRCChannelPart) _IRCPing Renamed: _IRCServerPing (SCRIPT BREAKING! Fix: Replace _IRCPing with _IRCServerPing) _IRCPong Renamed: _IRCServerPong (SCRIPT BREAKING! Fix: Replace _IRCPong with _IRCServerPong) _IRCSelfSetStatus Added : Sets you AFK and un-AFK _IRCSendMessage Renamed: Renamed _IRCMultiSendMsg. (SCRIPT BREAKING Fix: Replace IRCSendMessage with IRCMultiSendMsg) _IRCSendMessageRaw Renamed: Renamed _IRCRaw (SCRIPT BREAKING! Fix: Replace _IRCSendMessageRaw with _IRCRaw) _IRCServerTime Added : Get time from a Server _IRCServerVersion Added : Get Software Version from a Server _IRCTopic Renamed: _IRCChannelTopic (SCRIPT BREAKING! Fix: Replace _IRCTopic with _IRCChannelTopic) Improved Parameter detection in all Functions Renamed Functions to show who/what they effect, MASSIVE Script Breaking. Sorry! :/ 04/06/2014: _IRCGetMsg Added : Use to get IRC Messages. _IRCSetTopic Changed: Now named _IRCTopic (SCRIPT BREAKING! Fix: Replace _IRCSetTopic with _IRCTopic) Changed: Can now be used to query topic and does so by default. Use "" to blank the topic All functions now thoroughly check their parameters Updated all functions to use @extended to some errors Fixed @error returning 0 by starting all errors at 1 instead of 0 03/20/2014: _IRCChangeMode Changed: Now named _IRCMode (SCRIPT BREAKING! Fix: Replace _IRCChangeMode with _IRCMode) Changed: $_sMode is now OPTIONAL. Allowing the command to be used to Query current mode as well _IRCConnect Fixed : Missing Colon Before $_sRealName. It should now allow Real Names with spaces _IRCDisconnect Fixed : Issue with Blank Messages. Should now properly blank to Default _IRCPing Changed: $_Server is now REQUIRED. (SCRIPT BREAKING! Fix: Specify a server as Parameter 2) _IRCSendMessage Added : $_bTrim, Trims message if too long instead of breaking up the message, Default is true _IRCSetTopic Added : Command for setting a Channel Topic Updated Most Functions to include better error checking Updated Most Channel Related Functions to check for valid channels 03/16/2014: _IRCChangeMode Added : Optional parameters for channel modes Changed: Parameter ordering Target is now before Mode (SCRIPT BREAKING! Fix: Swap Parameters 2 and 3) _IRCConnect Changed: No longer exits the script on error, instead returns TCPConnect Error Code _IRCJoinChannel Added : Now Supports Channel Passwords _IRCOper Added : Command for IRC Server Operator Login Updated All Functions to have UDF standard error codes 02/24/2014: _IRCSendMessage Changed: Split Into _IRCSendMessage and _IRCSendMessageRaw (SCRIPT BREAKING! No Simple Fix Available) 02/23/2014: Made variables comply to UDF Standards http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm Removed MsgBoxes left over from old UDF Updated / Uploaded IRC.au3 Known and Reported Bugs:
      Message output only displays ANSI characters in CUI. (Can't Fix) Freenode requires registration for part messages thus the part message in example doesn't show up (Can't fix) Messages (e.g. PRIVMSG) are not forwarded?, when it contains umlauts/german mutations and when the message only contains a dot '.' (Unconfirmed) Warnings:
      Do NOT send a lot of messages at once. MOST networks will disconnect you. SOME networks will permanently ban you. A MINORITY will harshly retailiate. Do NOT use the Sleep() function in your scripts. It prevents you from receiving any new data, can disconnect your from the network, and have other undesired consequences. Use the TimerInit() and TimerDiff() functions and possibly a message queue. To Do:
      Possibly add in SSL functionality Create More Functions for IRC commands An entire IRC daemon written in AutoIt Possibly Include Kips TCP UDF for ASync Port Listening in Example Create Additional UDFs for extras such as CTCP, DCC, and Error Lookup Experiment with having functions check for the reply and see if reliable. Upcoming Changes:
      To Be Decided
    • Cormin
      By Cormin
      My script currently reads a text file line by line. I want it to look for this the chat message below and skip the session messages. 
      There are some garbage lines that I want it to skip over. So if a line doesnt match that format then skip it. I tried experimenting with StringRegExp but I think I'm using it wrong. Heres my code
      If StringRegExp($read, '\W\d\d\w\d\d\D.\W') = Not @error Then I was hoping that this would be able to see the open bracket, 2 digits, a colon, 2 digits,  close bracket, a space and a <. But it doesn't seem to be working.
       
      Eventually I want to be able to extract the username and chat message into separate strings but I haven't got that far yet.
    • ur
      By ur
      Is there any way to skip the execution of a particular block of code like any condition or expression, if the au3 file is included as library.?
      Like, in my code I wrote all the functionality as functions and called them in 4 lines.
      Now I have another requirement where I need to use the same code but different.So I am importing this code so that I can use these functions.
      But the code block which is outside the functions (main code) is being executed when I import the au3 file.Is there any condition to check whether the file is running directly or included in another au3 file as library, so that I can keep the same here.
       
      Please suggest if any ideas.
    • AoRaToS
      By AoRaToS
      s!mpL3 LAN Messenger as the name suggests is a messenger designed and developed to offer chat communication over Local Area Networks while being as simple to use as possible. This project started way back in 2008 with only basic functionality and is regularly updated with new features in order to make it more useful and user friendly. What I wanted was a simple, small, serverless program that would work without installation cause that was the ideal combination for my workplace back then, so I ended up with this!

      I have attached some images from various versions:
      Check the rest below! (from various versions)

      Previous downloads: 7430 (Without counting the ones from the Downloads section.)

      Current version 2.9.8.8! [30/09/2015]  s!mpL3 LAN Messenger.zip
      [Attachment version updated to 2.9.8.8]  

      s!mpL3 LAN Messenger version 2.9.8.8 - [30/09/2015]

      1. Removed some test code that could cause message boxes to pop up for Windows versions prior to Windows 10.


      You can view/download the full change log here: ChangeLog.txt

      Tested and working on Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10.


      Things you need to know before trying it:

      1. Start the program, select one or more connections from what's available and click Connect (If a firewall notice comes up, click 'Allow' or 'Add Exception')
      When someone else on your network does the same, they will appear in your TreeView and you will appear in theirs, double click their name and chat!

      2. s!mpL3 LAN Messenger does not require a server to be running, it's standalone.

      3. On the first run an .ini file is created at @LocalAppDataDirs!mpL3 LAN Messenger which stores the settings so that they are used every time you run the application. If you delete the .ini file it will be created again (with default settings at program startup or with your selected settings if you press Save from the Preferences window).

      4. All communication is encrypted using AES so it's quite secure against Network sniffers.

      5. You can send files and folders by dragging and dropping them in a conversation window. Folders are compressed before being sent. You can also drop multiple items to be sent.

      6. There is a "Hide" button located in the tray right click context menu that will hide all open windows. You can assign a Hotkey combination from Preferences. The default combination is Ctrl+H.

      7. s!mpL3 LAN Messenger uses port 60000 by default. You can change the port used by adding "Port=****" (without quotes, stars represent numbers) to the Config file described above. Communication is UDP.

      8. There is an Updater feature you can use to always have the latest available version, you only need an internet connection for that to work. You might need to clear your Internet Explorer Temporary Files in order for it to find an updated version.

      9. You can Hide + Lock s!mpL3 LAN Messenger so it'll require a password in order to "Appear". To enable this, go to the Security Preferences.

      10. Note that versions after 2.9.8.1 are not compatible with previous versions due to the encryption used being changed. I recommend using the latest version, or at least use the same version over the LAN.


      Important Notice:

      I will not be releasing the source code, however, I might share some parts of code if requested...
      If you choose to decompile this software, don't release the source code.