MachineID.matches() returns true for different devices

We are seeing this issue when using Windows XP running IE6. Our customer is seeing the same issue when using IE8.
In our testing we used two Macbook Pro devices running Windows XP Bootcamp. We used Internet Explorer 6.
The following code returns true for bytes obtained from two different machine ids.
currentMachineId.matches(new MachineId(registeredDeviceBytes)
The two devices give us the following machine IDs, the Base64 representation is below
MIIBezCBwgYJKoZIhvcvAwIAMYG0MCsGCSqGSIb3LwMCZDAeDBxtL2xwQWlPSGhibUNoemNNb0FoQzRoTG95bXM9MC sGCSqGSIb3LwMCZTAeDBx1YWhjL3haM3FBdlZoR21lU2tWaXRTc0xZV009MCsGCSqGSIb3LwMCZjAeDBxyQkFMeXBR YkZLaStTSlhGUm1CNHlUeXhBNmc9MCsGCSqGSIb3LwMCZzAeDBxYc0E3cXBzbGkrVFZveTkyRGhJbnhUMkJ3LzA9BC BmOGI0MTAzMTQ3MDNkMjYxNDc2ODI2YzIzMDMzNjdhMqCBkTCBjjAFDANXaW4xgYQwgYECAQECAQEweQIBPDF0MA4G CSqGSIb3LwMCaAIBCjAOBgkqhkiG9y8DAmkCAQowEwYJKoZIhvcvAwJkAgEPoAMBAf8wEwYJKoZIhvcvAwJlAgEPoA MBAf8wEwYJKoZIhvcvAwJmAgEUoAMBAf8wEwYJKoZIhvcvAwJnAgEeoAMBAf8=
MIIBezCBwgYJKoZIhvcvAwIAMYG0MCsGCSqGSIb3LwMCZDAeDBx2dkZoNXRMOEFqK2NoSmVZVXc0T3dPUzZJcVE9MC sGCSqGSIb3LwMCZTAeDBxXYlJqcTl1N3Z4aUY2YnVqNWpBQTBhU1dUVEU9MCsGCSqGSIb3LwMCZjAeDBxyQkFMeXBR YkZLaStTSlhGUm1CNHlUeXhBNmc9MCsGCSqGSIb3LwMCZzAeDBxYc0E3cXBzbGkrVFZveTkyRGhJbnhUMkJ3LzA9BC A4NGFiZTJjN2VhM2M1NDgxOWQxM2RiZGNmYjVhMjgzNKCBkTCBjjAFDANXaW4xgYQwgYECAQECAQEweQIBPDF0MA4G CSqGSIb3LwMCaAIBCjAOBgkqhkiG9y8DAmkCAQowEwYJKoZIhvcvAwJkAgEPoAMBAf8wEwYJKoZIhvcvAwJlAgEPoA MBAf8wEwYJKoZIhvcvAwJmAgEUoAMBAf8wEwYJKoZIhvcvAwJnAgEeoAMBAf8=
Can you tell us why this is happening? Under what circumstances can this happen? How to avoid this or any workarounds?
We need an answer really soon. We are about to launch a service that counts on being able to restrict the number of devices for watching videos.
Thanks

Hi DruMmer,
1. Nice play on words with your forum alias.  : )
2. Adobe Access DRM's "Device Binding" algorithm takes into play several different available machine attributes (imagine a set of various attributes that we check every time you attempt to play protected content). Our MachineID.matches() allows for small variations in attributes, since it's expected that desktop users will likely upgrade their hardware over time.  Because of this, MachineID.matches() will allow for a small tolerance in difference before returning "FALSE".
In your situation, you are seeing "TRUE" == MachineID.matches(otherMachineID) because surprisingly, almost all of the available attributes are the same between the 2 macbook pros' you're testing.  We will review our Device Binding Algorithm to determine if there should be some possible tweaking, as what we have access to on the MBP hardware may have changed.
In the meantime, an additional check you can perform to see if 2 machines are different (without using the underlying hardware) is MahineID.getUniqueID.  However, please understand the limitations of this API (read the Javadocs).  Of particular interest is that across DRM resets, this ID is not resilient (as apposed to MachineID.matches()).
cheers,
/Eric.

Similar Messages

  • Regex: how can Matcher.matches return true, but Matcher.find return false?

    Consider the class below:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class RegexBugDemo {
         private static final Pattern numberPattern;
         static {
                   // The BigDecimal grammar below was adapted from the BigDecimal(String) constructor.
                   // See also p. 46 of http://www.javaregex.com/RegexRecipesV1.pdf for a regex that matches Java floating point literals; uses similar techniques as below.
              String Sign = "[+-]";
              String Sign_opt = "(?:" + Sign + ")" + "?";     // Note: the "(?:" causes this to be a non-capturing group
              String Digits = "\\p{Digit}+";
              String IntegerPart = Digits;
              String FractionPart = Digits;
              String FractionPart_opt = "(?:" + FractionPart + ")" + "?";
              String Significand = "(?:" + IntegerPart + "\\." + FractionPart_opt + ")|(?:" + "\\." + FractionPart + ")|(?:" + IntegerPart + ")";
              String ExponentIndicator = "[eE]";
              String SignedInteger = Sign_opt + Digits;
              String Exponent = ExponentIndicator + SignedInteger;
              String Exponent_opt = "(?:" +Exponent + ")" + "?";
              numberPattern = Pattern.compile(Sign_opt + Significand + Exponent_opt);
    //     private static final Pattern numberPattern = Pattern.compile("\\p{Digit}+");
         public static void main(String[] args) throws Exception {
              String s = "0";
    //          String s = "01";
              Matcher m1 = numberPattern.matcher(s);
              System.out.println("m1.matches() = " + m1.matches());
              Matcher m2 = numberPattern.matcher(s);
              if (m2.find()) {
                   int i0 = m2.start();
                   int i1 = m2.end();
                   System.out.println("m2 found this substring: \"" + s.substring(i0, i1) + "\"");
              else {
                   System.out.println("m2 NOT find");
              System.exit(0);
    }Look at the main method: it constructs Matchers from numberPattern for the String "0" (a single zero). It then reports whether or not Matcher.matches works as well as Matcher.find works. When I ran this code on my box just now, I get:
    m1.matches() = true
    m2 NOT findHow the heck can matches work and find NOT work? matches has to match the entire input sequence, whereas find can back off if need be! I am really pulling my hair out over this one--is it a bug with the JDK regex engine? Did not seem to turn up anything in the bug database...
    There are at least 2 things that you can do to get Matcher.find to work.
    First, you can change s to more than 1 digit, for example, using the (originaly commented out) line
              String s = "01";yields
    m1.matches() = true
    m2 found this substring: "01"Second, I found that this simpler regex for numberPattern
         private static final Pattern numberPattern = Pattern.compile("\\p{Digit}+");yields
    m1.matches() = true
    m2 found this substring: "0"So, the problem seems to be triggered by a short source String and a complicated regex. But I need the complicated regex for my actual application, and cannot see why it is a problem.
    Here is a version of main which has a lot more diagnostic printouts:
         public static void main(String[] args) throws Exception {
              String s = "0";
              Matcher m1 = numberPattern.matcher(s);
              System.out.println("m1.regionStart() = " + m1.regionStart());
              System.out.println("m1.regionEnd() = " + m1.regionEnd());
              System.out.println("m1.matches() = " + m1.matches());
              System.out.println("m1.hitEnd() = " + m1.hitEnd());
              m1.reset();
              System.out.println("m1.regionStart() = " + m1.regionStart());
              System.out.println("m1.regionEnd() = " + m1.regionEnd());
              System.out.println("m1.lookingAt() = " + m1.lookingAt());
              System.out.println("m1.hitEnd() = " + m1.hitEnd());
              Matcher m2 = numberPattern.matcher(s);
              System.out.println("m2.regionStart() = " + m2.regionStart());
              System.out.println("m2.regionEnd() = " + m2.regionEnd());
              if (m2.find()) {
                   int i0 = m2.start();
                   int i1 = m2.end();
                   System.out.println("m2 found this substring: \"" + s.substring(i0, i1) + "\"");
              else {
                   System.out.println("m2 NOT find");
                   System.out.println("m2.hitEnd() = " + m2.hitEnd());
              System.out.println("m2.regionStart() = " + m2.regionStart());
              System.out.println("m2.regionEnd() = " + m2.regionEnd());
              System.out.println("m1 == m2: " + (m1 == m2));
              System.out.println("m1.equals(m2): " + m1.equals(m2));
              System.exit(0);
         }Unfortunately, the output gave me no insights into what is wrong.
    I looked at the source code of Matcher. find ends up calling
    boolean search(int from)and it executes with NOANCHOR. In contrast, matches ends up calling
    boolean match(int from, int anchor)and executes almost the exact same code but with ENDANCHOR. Unfortunately, this too makes sense to me, and gives me no insight into solving my problem.

    bbatman wrote:
    I -think- that my originally posted regex is correct, albeit possibly a bit verbose, No, there's a (small) mistake. The optional sign is always part of the first OR-ed part (A) and the exponent is always part of the last part (C). Let me explain.
    This is your regex:
    (?:[+-])?(?:\p{Digit}+\.(?:\p{Digit}+)?)|(?:\.\p{Digit}+)|(?:\p{Digit}+)(?:[eE](?:[+-])?\p{Digit}+)?which can be read as:
    (?:[+-])?(?:\p{Digit}+\.(?:\p{Digit}+)?)        # A
    |                                               # or
    (?:\.\p{Digit}+)                                # B
    |                                               # or
    (?:\p{Digit}+)(?:[eE](?:[+-])?\p{Digit}+)?      # COnly one of A, B or C is matched of course. So B can never have a exponent or sign (and A cannot have an exponent and C cannot have a sign).
    What you probably meant is this:
    (?:[+-])?                                   # sign       
        (?:\p{Digit}+\.(?:\p{Digit}+)?)         #   A
        |                                       #   or
        (?:\.\p{Digit}+)                        #   B
        |                                       #   or
        (?:\p{Digit}+)                          #   C
    (?:[eE](?:[+-])?\p{Digit}+)?                # exponent
    and that this must be a sun regex engine bug, but would love to be educated otherwise. Yes, it looks like a bug to me too.
    A simplified version of this behavior (in case you want to file a bug report) would look like this:
    When `test` is a single digit, m.find() returns _false_ but matches() returns true.
    When `test` is two or more digits, both return true, as expected.
    public class Test {
        public static void main(String[] args) {
            String test = "0";
            String regex = "(?:[+-])?(?:\\p{Digit}+\\.(?:\\p{Digit}+)?)|(?:\\.\\p{Digit}+)|(?:\\p{Digit}+)(?:[eE](?:[+-])?\\p{Digit}+)?";
            java.util.regex.Matcher m = java.util.regex.Pattern.compile(regex).matcher(test);
            System.out.println("matches() -> "+test.matches(regex));
            if(m.find()) {
                System.out.println("find()    -> true");
            } else {
                System.out.println("find()    -> false");
    }

  • Can I have one apple ID and two iCloud accounts for different devices.

    can I have one apple I'd and numerous iCloud accounts for different devices?

    Yes you can, you just need to go into settings and into icloud, once it says account, login to your desired account

  • ADF mobile: Reuse taskflows for different device models (resolutions) ?

    Hi,
    ADf 11.1.2.3.0 + mobile extension.
    What's best practice to create the same mobile app for different device models (= different screen resolutions = different layout)?
    I mean an app on a smartphone may use different gui components and layout than on a tablet device.
    In adfmf-feature.xml the content of a feature can be either a amx page or a task flow.
    Here I can add a constraint to determine e.g. the device.model and use different amx pages depending on the device model.
    But how to reuse the task flow (assumtion: the taskflow is independent from the device model) and just create specific amx page per device model?
    regards
    Peter

    Replying to an old thread.
    With ADF Mobile 11.1.2.4.0, to display different content views for different devices,  it is recommended that we use following property as a constraint on the content of the feature.
    Property
    Operator
    Value
    hardware.screen.diagonalSize
    more
    6
    It applies this constraint on the devices which have screen size more than 6 inches. Which is applicable for the tablets.
    For more details, look at the HR sample found at the following location in your JDev after installing the ADF Mobile Extension
    jdev_install/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples

  • IsSiteLocalAddress() of inetAddress class returns true for IPv4 Adresses

    Any idea why isSiteLocalAddress() method of inetAddress class returns true for IPv4 Adresses?
    To my knowledge the IPv4 address can't be a site local address.
    Is it expected behaviour?
    Here is the snippet of the code.
    InetAddress inet=InetAddress.getByName(samplehost);
    // Verifying the address type of IPv6.
    if(inet.isAnyLocalAddress())
    System.out.println("Any local address is " + inet);
    if(inet.isLinkLocalAddress())
    System.out.println("Link local address is " + inet);
    if(inet.isLoopbackAddress() && ip.indexOf(":") != -1)
    System.out.println("Loopback address " + inet);
    if(inet.isMulticastAddress())
    System.out.println("Multicast address " + inet);
    if(inet.isSiteLocalAddress())
    System.out.println("Site local Address " + inet);
    if(ip.indexOf(":") != -1)
    System.out.println("Its an IPv6 global address " + inet);
    if(ip.indexOf(".") != -1 && ip.indexOf(":") == -1)
    System.out.println("Its an IPv4 global address " + inet);

    Here is the output and program for your reference.
    D:\DIA>java testIPv6 shash10-w2k3
    Host name is shash10-w2k3
    Inet Address Object is : shash10-w2k3/192.168.126.1
    Site local Address shash10-w2k3/192.168.126.1
    Its an IPv4 global address shash10-w2k3/192.168.126.1
    Here is the program.
    import java.util.*;
    import java.io.*;
    import java.util.*;
    import java.util.logging.Level;
    import java.rmi.*;
    import java.net.InetAddress;
    import java.net.Socket;
    import com.ca.dia.dna.*;
    import com.ca.dia.common.rmiClient.*;
    public class testIPv6 {
         public static void main(String args[])
              try{
                   System.out.println("Host name is "+args[0]);
                   InetAddress inet=InetAddress.getByName(args[0]);
                   System.out.println("Inet Address Object is : "+inet.toString());
                   String ip = inet.getHostAddress();
                   // Verifying the address type of IPv6.
              if(inet.isAnyLocalAddress())
                   System.out.println("Any local address is " + inet);
              if(inet.isLinkLocalAddress())
                   System.out.println("Link local address is " + inet);
              if(inet.isLoopbackAddress() && ip.indexOf(":") != -1)
                   System.out.println("Loopback address " + inet);
              if(inet.isMulticastAddress())
                   System.out.println("Multicast address " + inet);
              if(inet.isSiteLocalAddress())
                   System.out.println("Site local Address " + inet);
              if(ip.indexOf(":") != -1)
                   System.out.println("Its an IPv6 global address " + inet);
              if(ip.indexOf(".") != -1 && ip.indexOf(":") == -1)
                   System.out.println("Its an IPv4 global address " + inet);
              catch(Exception e)
                   System.out.println("Exception Happened");
                   System.out.println("Not reachable");
    }

  • Uniform UI for different devices

    Hi All,
    We have different devices with different resolution, aspect ratio. I was trying to figure out, Is there possibility of developing UI which will look same in different devices? Or should we develop separately for different devices? I was just guessing, prob we can use separate .res files for different devices using LWUIT.
    Please provide your inputs regarding this. And if there are best practices for J2ME application, you can share with me.
    Thanks in advance,
    Sandeep

    [J2MEPolish|http://www.j2mepolish.org/cms/] does the job pretty good. Try it out.

  • Can DFM notifiy/email different users for different device errors?

    I'm aware how to change DFM thresholds/polling for different devices. I can get notification working fine for "an email".
    But,
    Can DFM email "joe" for router failures, and "fred" for switch failures?
    URL to describe steps would be great!
    Might Cisco implement this feature if not already?

    From http://www.cisco.com/univercd/cc/td/doc/product/rtrmgmt/cw2000/dfm/dfm_faq.htm#67620
    Q) Can I configure the Mail Notifier Adapter to send notifications to different recipients depending on the fault type?
    A) No. You can send notifications to different recipients, but all recipients will receive the same information.

  • Best way to preview AIR for Android projects for different devices?

    So if I am developing an AIR for Android app, is there a good, simple way to preview the app on any android device? I have installed it on my phone of course, but is there a simulator/emulator of some sort available so we can see how it would look on both an Android phone and a tablet? Thanks in advance to anyone who can help!

    DPI aside, you can just set your resolution on the project to the target devices resolution to preview how it will look. While vectors will render much smoother on the device (higher DPI), it's a very easy way to target various resolutions for testing.
    If you have the full CC suite you might want to consider using Flash Builder 4.7 which has many different device presets and allows you to create your own presets to mimic tablets and phones. It really depends how complex your project is to move over to FB.

  • Muse, is there code for different devices in web page?

    When designing in muse, can you build desktop, tablet and phone all together with one website? Make where people who have phones goes to the phone site and people with tablets go to the tablet site. Desktop users go to desktop. If this is possible  is there any code I need to put in my web pages for visitors to go that have different devices? If so please tell me where I can find it. Thanks!

    Yes, you can build desktop, tablet and phone layouts for a website all in one Muse project and host the website to Adobe hosting through Business Catalyst or to a third party webhosting provider. The site logic detects the browser and device used by the visitor and automatically redirects to load the appropriate tablet, phone, or desktop layout. There are in-depth tutorials on building a mobile site in Muse - http://www.adobekb.com/creating_mobile_layouts_pt01.html
    Thanks,
    Vinayak

  • ITunes with different libraries for different devices?

    My wife has an iPod Touch and I'm getting an iPhone; I would like to sync them both to iTunes on the same computer but I want to keep everything 100% separate with the least hassle.  There's already a lot of discussion online about different flavors of this issue, but -- with apologies from an inexperienced user -- I don't really understand what approach I should use.
    Apple suggests three methods http://support.apple.com/kb/ht1495
    Method 1 is create a separate windows user account .... Seems this would work, but I have no other reason to have a separate Windows account so would prefer not to.
    Method 2 is to set different sync settings, playlists, etc for each device .... this seems like a hassle.
    Method 3 is to create a separate library .... maybe this is the solution for me, but I don't really know what it means.  Do separate libraries keep everything (music, video, contacts, apps, etc) separate and distinct?  Can I configure iTunes so that it knows to use Library1 with my wife's iPod, and Library2 with my iPhone?
    So I guess my questions is if someone can explain to me if Method 3 would do what I want, and any tricks that I need to know in setting it up?  Thanks!

    Correct. You have to close iTunes first and to shift to the other iTunes library, hold down shift key while opening iTunes. It does keep almost everything separately (you may use the same media file source though e.g. music and Videos and selectively import them to the second iTunes library; organize your photos separately e.g. Different photo folders) except Contacts & Calendars - for Outlook Contacts & Calendars, I believe it also has an option to switch profile/identity so you'll have separate sets of Contacts.

  • HT4910 I have multiple accts w different apple Ids for different devices for family members. My question is do we each have our own cloud or can it be accessed by another family member

    I want my iCloud to be private , I have a large family w different devices and different apple Ids , can they be accessed or linked in any way?

    Others can log into your account, only if they know your ID and password.

  • PropertyDescriptor.isBound() returns "true" for text-property of JTextField

    Hello,
    I have this simple code to retrieve all bound properties of a JTextField:
    BeanInfo beanInfo = Introspector.getBeanInfo( JTextField.class );
    PropertyDescriptor[] discriptors = beanInfo.getPropertyDescriptors();
    for ( PropertyDescriptor propertyDescriptor : discriptors ) {
         System.out.println( "propertyDescriptor.getDisplayName(): " + propertyDescriptor.getDisplayName() );
         System.out.println( "propertyDescriptor.isBound(): " + propertyDescriptor.isBound() );
         System.out.println();
    }When I run this, I can see that the property "text" is listet as "bound" (isBound() == true ). I know there is no JTextFieldBeanInfo, so the Introspector does a runtime introspection. And I know that "text" is not a bound property on JTextField. So why is "isBound()" reporting "true" for the "text" property? (I was hoping to get all bound properties of a class this way, but appearently it does not word).
    Thanks a lot for your help!

    Hello,
    so far I was not able to solve the problem... regarding my question my isBound() is true for the "text" Property, does anyone know why? And furthermore, how could one gather all bound properties of a swing component?

  • Apple ID for different devices?

    I have an iPad2 and I just purchased an iPad Mini for my wife.
    I want to be able to transfer my app purchases on my iPad2 to my wife's iPad Mini, and to do so, I know that I have to use the same Apple ID for her iPad Mini as I have for my iPad2.
    How will keeping the same Apple ID for the two devices affect the following:
    1) Can my wife set up a different email address for her account for her Mail app on her iPad Mini than I am using on my iPad2?
    2) Will having the same Apple ID affect our ability to communicate with each other using FaceTime on our two devices?
    Thanks for your help.

    1. Your wife can set up her own email account on her Mini without any issues at all.
    2. You can use one Apple ID one both devices and set up and use FaceTime and Messages on both devices without having to set up another Apple ID. You will howver have to add an additional email address for her to be contacted at in the FaceTime and Messages setting - and then remove the Apple ID email address as the "contact at" email address from the settings in both apps.
    I have 4 devices (including my Mac) that I use one Apple ID on and can FaceTime and Message from all devices to all devices because I entered different contact at email addresses on 3 of the devices.
    You may want to consider having your wife set up an Apple ID just to make it easier to use FaceTime and Messages and so that she can have her own iCloud account. If she will sync with iTunes and has no real interest in iCloud, having her own ID will be a non issue in that regard.

  • Using 5Ghz and 2.4 Ghz for different devices

    I am an old lady, so please be gentle.  I know nothing about networking but have been reading and trying hard to learn.
    About a month ago my MBP started having major issues maintaining a wifi connection.  I read through most of a 190+ page thread about other Yosemite users having this problem and tried the suggested solutions that I could understand.  What has worked for me is to set up my old 2007 Airport Extreme to use only 5 Ghz.  Now my MBP connection works great but my AirPrint printer can only use 2.4 Ghz.  I extended my network with one old Airport Express and connected the printer to it with the printer cable so I can print easily from my MBP.  I have configured a second old Airport Express on 2.4 Ghz so I can use the printer from iOS devices but it is SLOW and what a pain to keep changing networks.
    Would a new Airport Extreme make life easier for me?  Would giving 5 and 2.4 different names on the new Airport Extreme offer a better printing experience than my current setup?  It's about time that I get a new router anyway, I guess.  TIA for advice.

    For an old lady you did well cobbling that network together to the point it works at all. It sounds like a major inconvenience.
    Would a new Airport Extreme make life easier for me?
    Much easier. Not only that, like all Apple products it comes with 90 days of complimentary telephone support, if you need help with its configuration (which you probably won't).
    Would giving 5 and 2.4 different names on the new Airport Extreme offer a better printing experience than my current setup?
    No, I don't think you will find that worthwhile. Don't give the 5 GHz network a separate name, just let your devices connect to whatever network they determine is best. That way, as wireless environmental conditions change they will have the agility to choose either one without your intervention.
    AirPrint will work automatically, as long as your printer really is an AirPrint printer. AirPrint is a specific network connection protocol and is not synonymous with mere wireless. If your printer is not an AirPrint printer, it will continue to work, but you might need to configure it to connect to the new AirPort Extreme's network.

  • AirPort Extreme runs at different speeds for different devices.  Please help.

    I have a 4th gen Arport Extreme 802.11n.  My iMac gets a download speed of between 15-20Mbps depending on time of day.  All other devices top out at about 1Mbps.  I can't figure out why or how to get it worked out.  One of the devices I tried was my iPhone, so I took it to a different hotspot and it works fine, so the iPhone is not the problem.  I've updated all my software and have rebooted the Airport.  I'm not sure what else to do.  If anyone can help I'd greatly appreciate it.

    Just connected both my ipad and atv to my airport expresses 2.4N-B-G network and getting a reading of 72 for the rate on both devices. This network has my roomates older g4 power book connected to it which of course will slow down the network. My atv2 also showed one less bar reception than the when it was connected to the 5ghz extremes network which had 5 bars.
    I find this odd. Would love some comments.

Maybe you are looking for