Showing posts with label write. Show all posts
Showing posts with label write. Show all posts

Tuesday, April 4, 2017

Java Reflection- Accessing/Modifying private methods/fields

In this post we would access and modify private methods and fields from a class using Java Reflection. This operation wont be possible normally with Java.

Language Used:
Java

Focus Area:
  1. Access a method from a class having private constructor.
  2. Access a private method
  3. Access/Modify a private variable
Git Repo:
https://github.com/csanuragjain/extra/tree/master/ReflectionAccessModifyPrivateData

Related:
https://cooltrickshome.blogspot.in/2017/02/java-reflection-reading-unknown-class.html

Program:

Unknown2.java:
 package com.cooltrickshome;  
 public class Unknown2 {  
      private final String msg="This is final string from private variable";  
      private Unknown2(){  
      }  
      private String privateWelcome(String message)  
      {  
           message=message+" processed by private method";  
           return message;  
      }  
      public void showMessage(){  
           System.out.println("I should not be called since this class constructor is private");  
      }  
 }  

Explanation:
  1. This class has a private variable which is also final. So any other class should not ideally be able to access or modify it.
  2. The constructor of this class is private so you should not be able to create an instance of this class. Because of this we should not be able to call showMessage function.
  3. Method privateWelcome is private so another class should not be able to call this method.

AccessPrivateData.java
 package com.cooltrickshome;  
 import java.lang.reflect.Constructor;  
 import java.lang.reflect.Field;  
 import java.lang.reflect.Method;  
 public class AccessPrivateData {  
      public static void main(String[] args) throws Exception {  
           Class c=Class.forName("com.cooltrickshome.Unknown2");  
           //Class<Unknown2> c=Unknown2.class;  
           Constructor<Unknown2> constr=c.getDeclaredConstructor();  
           constr.setAccessible(true);  
           Unknown2 s=(Unknown2)constr.newInstance();   
           System.out.println("Calling method from class with private constructor:");  
           s.showMessage();   
           System.out.println();  
           Field field = c.getDeclaredField("msg");  
           field.setAccessible(true);  
           System.out.println("Calling private field:");  
           System.out.println(field.get(s));  
           System.out.println();  
           System.out.println("Changing a final variable value:");  
           field.set(s, "I have change a private final variable");  
           System.out.println(field.get(s));  
           System.out.println();  
           Method m= c.getDeclaredMethod("privateWelcome", String.class);  
           m.setAccessible(true);  
           Object o=m.invoke(s, "Calling private method");  
           System.out.println("Calling private method:");  
           System.out.println(o);  
      }  
 }  

Explanation:
  1. We will bypass all the constraint and access all the private data from Unknown2 class
  2. First we reference our Unknown2 class by using Class.forName passing the class to be accessed along with package name.
  3. Now we obtain the constructor of Unknown2 class by callling the getDeclaredConstructor method
  4. Since this contructor is private, so we remove the constraint by setting setAccessible as true
  5. Now we can create a new instance using newInstance method.
  6. Since an instance is ready so we can simply call the showMessage method
  7. Now lets access the private variable
  8. We obtain the private variable of Unknown2 class by calling getDeclaredField passing the field name.
  9. We call setAccessible to true on this field so that we can access this field even though it is private.
  10. Now we can retrieve this field value by simply calling get method passing the class instance object.
  11. Now lets change the final field value.
  12. Since this field setAccessible is already set to true earlier, we simply call the set method passing the Unknown2 class object and the new field value.
  13. Now lets access the private method.
  14. We obtain the private method by calling the getDeclaredMethod passing the private method name nd the type of argument it accepts (in our case the method needs a String)
  15. We call setAccessible to true on this method so that we can access this method even though it is private.
  16. We call the method by using invoke method, passing an instance of this class and the argument value.


Output:
 Calling method from class with private constructor:  
 I should not be called since this class constructor is private  
 Calling private field:  
 This is final string from private variable  
 Changing a final variable value:  
 I have change a private final variable  
 Calling private method:  
 Calling private method processed by private method  


Hope it helps :)

Wednesday, November 23, 2016

Convert Base64 encoded string to Image using Java

This program will help you convert a base64 string to an image and then save the image to the current directory using Java.

Language Used:
Java

Git Repo:
https://github.com/csanuragjain/extra/tree/master/Base64ToImage

Pom Dependency:
 <dependency>  
   <groupId>commons-codec</groupId>  
   <artifactId>commons-codec</artifactId>  
   <version>1.10</version>  
 </dependency>  

Program:

Main Method:
      public static void main(String[] args) throws IOException {  
           // TODO Auto-generated method stub  
           Scanner s=new Scanner(System.in);  
           System.out.println("Enter base64 string to be converted to image");  
           String base64=s.nextLine();  
           byte[] base64Val=convertToImg(base64);  
           writeByteToImageFile(base64Val, "image.png");  
           System.out.println("Saved the base64 as image in current directory with name image.png");  
      }  

How it works:
1) First we make a scanner object and ask user to enter the base64 string which need to be converted to image.
2) We call the convertToImg method which convert the base64 string to byte[]
3) We pass the above retrieved byte[] as argument to writeByteToImageFile method. This will convert the byte[] to image and will save as image.png which was the second argument.

convertToImg method:
 public static byte[] convertToImg(String base64) throws IOException  
      {  
           return Base64.decodeBase64(base64);  
      }  

How it works:
1) We pass the base64 string to Base64.decodeBase64 method which converts the base64 string to byte[]

writeByteToImageFile method:
 public static void writeByteToImageFile(byte[] imgBytes, String imgFileName) throws IOException  
      {  
           File imgFile = new File(imgFileName);  
           BufferedImage img = ImageIO.read(new ByteArrayInputStream(imgBytes));  
           ImageIO.write(img, "png", imgFile);  
      }  

How it works:
1) This method obtains the byte[] and the image file name
2) We make a file object pointing to image file name
3) We make a BufferedImage object from the image bytes we passed
4) We use the ImageIO.write to write the BufferedImage into a physical file.

Output:
 Enter base64 string to be converted to image  
 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  
 Saved the base64 as image in current directory with name image.png  

Full Program:
 package com.cooltrickshome;  
 import java.awt.image.BufferedImage;  
 import java.io.ByteArrayInputStream;  
 import java.io.File;  
 import java.io.IOException;  
 import java.util.Scanner;  
 import javax.imageio.ImageIO;  
 import org.apache.commons.codec.binary.Base64;  
 public class Base64ToImage {  
      /**  
       * @param args  
       */  
      public static void main(String[] args) throws IOException {  
           // TODO Auto-generated method stub  
           Scanner s=new Scanner(System.in);  
           System.out.println("Enter base64 string to be converted to image");  
           String base64=s.nextLine();  
           byte[] base64Val=convertToImg(base64);  
           writeByteToImageFile(base64Val, "image.png");  
           System.out.println("Saved the base64 as image in current directory with name image.png");  
      }  
      public static byte[] convertToImg(String base64) throws IOException  
      {  
           return Base64.decodeBase64(base64);  
      }  
      public static void writeByteToImageFile(byte[] imgBytes, String imgFileName) throws IOException  
      {  
           File imgFile = new File(imgFileName);  
           BufferedImage img = ImageIO.read(new ByteArrayInputStream(imgBytes));  
           ImageIO.write(img, "png", imgFile);  
      }  
 }  

Hope it helps :)