查看: 16757|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 N3 o: R1 X6 E+ _4 p& ^7 k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 i; `5 l, M! l$ ]9 ?0 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 w% \) P+ L* X3 b! {5 H* _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 v6 k/ b% I" ^4 C2 ~4 B. W0 T. e
0 E8 P: ?3 c& }% k5 f' v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! K0 a; @4 S3 b) g/ E, [- u( w# a
7 h0 A# c6 {2 L补充内容 (2012-3-8 09:42):
$ P6 f2 Y: h" w( a& i' [5 c" whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! X3 V. c$ i# ?  e% Z: m5 J( k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' E! f8 |: ^6 I9 C& L% U2 N

( \4 r, X( m) z$ qhimr <address> <value>. sample: himr 0x80040000 0x08 f0 J9 o9 X4 H4 S$ h7 w5 Q
3 P. R, ]; G+ y: C8 m8 x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ @8 [+ i+ ^5 a  R- o* J
himr 0x80040000 0x00" B# [. T1 l3 F
himr 0x80040001 0x11
/ f) L) E- D" d* yhimr 0x80040002 0x22
4 @$ h* `7 j! V! ?/ X# p; ?0 h" [himr 0x80040003 0x33$ H0 |- Y8 n; d' t6 S  ~- F
himr 0x80040004 0x44
$ f) ]0 ~7 e* Uhimr 0x80040005 0x55
1 H, H3 y+ V+ d( I+ b! w) @* Y. }
3 J: \" Q: O7 H; O! jSN也是类似。* A. k( N9 A1 ?, z0 @  L8 [
' A8 S  }2 e! x1 O/ x
现在主要是,谁告诉我们MAC和SN的地址?0 ]7 Y4 T$ R( A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - ~0 N! f: f6 e$ }+ P9 G  x
一直想找到运程修改MAC和SN的办法,苦于无解啊
. m% N. u; ]. H' V) n
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 Y9 F' m5 G$ I# f  i  B
7 k  n2 B0 q4 D) |4 P3 F9 e
修改的代码早有了。到今天不会编译。
1 [* k( H; ]: j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ i8 D2 t( m. R% Z- F
  2. #include <malloc.h>* y" _" `  e* k- \+ ~
  3. #include <sys/types.h>
    . X. {5 p9 K( y! S' P
  4. #include <sys/stat.h>
    9 L( Q  G0 d2 d' k- T+ Y: a5 R
  5. #include <sys/ioctl.h>
    ; L! k" {- I% e( a* ~
  6. #include <stdio.h>
    4 O* S7 y; C+ D) d$ b% P4 K
  7. #include <string.h>
    3 e' N% ^, A1 K8 g9 T

  8. 5 o0 X* p* ?+ N( L5 S/ a; @
  9. typedef struct {& e) E1 Y& I8 ^' H! k! |
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( e8 T( z& t5 I
  11.         unsigned int        sub_addr_count;9 Z- F/ U& ^) x' ]/ h- U4 r' Z. y
  12.         unsigned char*        e2prom_cmd_data;
    : W8 Y' [% ^( {- C: S, A
  13.         unsigned int        data_count;
    $ k8 f0 @" ], @+ p) X
  14. } e2prom_s_cmd;
    - R& P5 o4 Z1 c# {! x( L3 \) R7 p

  15. 1 q: }) M" O) V" }
  16. #define E2PROM_CMD_READ 1
    3 h/ U5 ?% k0 p% g, J! [- g
  17. #define E2PROM_CMD_WRITE 2. Z2 k: h5 Z' o/ q7 c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 B) d2 j5 y! X( e, Y5 C! [* w
  19. 6 [5 K, [! W" S) S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 h6 C5 @, [6 R' }; A
  21. {; S& {5 ^9 U9 s& g% G
  22.         int fd, ret;) N& z4 B+ S; q9 X* V- U
  23.         e2prom_s_cmd arg;6 Z% u& \! M8 X; G6 L, ?' Z
  24.         unsigned char buf[0x18];( j# i3 J3 X; d; _4 |, i" h- m

  25. 0 Z8 {. r9 P* n! q: c( P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( b$ B, v# A6 i% t# w
  27.         if (fd  < 0) {- V$ B9 D2 ^) c# G) t8 m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 h0 y6 R- l$ O5 S' w
  29.                 return -1;3 W& N- `+ B3 {7 t; S' l7 @) T
  30.         }* {: C$ N+ d$ d- f- c$ d
  31.         arg.sub_addr_count      = 2;
    / ^5 h( i5 d. q
  32.         arg.data_count          = 0x18;
    ) L  W8 Y* U' Q! n
  33.         arg.e2prom_cmd_sub_addr = 0x290;) e: J/ i5 `2 s! m$ u- ~! L0 X
  34.         arg.e2prom_cmd_data     = buf;  M3 p  E8 {7 C9 ~, X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 s" p* }0 U$ d+ S9 ~3 R( {! }; q
  36.         if (ret != 0) {
    . }( q' L0 T8 C, R, x. c' E6 S( l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 h$ q" E3 C( ^6 E; d
  38.                 return -1;
    - U2 P8 d1 w1 L$ T1 I! V# O# Q  v
  39.         }
    ' Q( _6 {6 j) ?2 V
  40.         memcpy(mac, buf, 6);
    # A4 i) e! d  \* N/ ?; n3 X  F" ^; \
  41.         memcpy(stbid, &buf[6], 18);
    2 `/ s& `! Z5 B( _$ E# ^
  42.         stbid[18] = '\0';
    $ j7 V# q# O; Q6 W3 h2 R2 S' }& _

  43. + Z4 A* P' C- l) P/ [6 n% i
  44.         return 0;
    2 A6 X4 e# m7 v; k! x; ?8 H" v
  45. }9 x) `+ u" P' v2 [

  46. ) Y0 g- r& d, e6 S6 n( P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - \7 b- q( Y4 A! [' h% R. K* @5 v
  48. {
    $ o% L- X5 s* o% [. c" \" v- B6 U; b
  49.         int fd, ret;& Y$ l+ O  @& ~3 K
  50.         e2prom_s_cmd arg;
    4 @0 U/ @4 n; `8 }
  51.         unsigned char buf[0x18];( H: L$ S" \) R) i
  52. : V% Y9 U6 \$ v& e2 L
  53.         memcpy(buf, mac, 6);
    , t- m& G5 B( {) l1 y
  54.         memcpy(&buf[6], stbid, 18);, c8 e- ]  L6 P; S6 Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- _5 M6 _  v$ A1 r, Y! E/ p7 a
  56.         if (fd  < 0) {* B. \2 y6 Z6 e# \" w1 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 @/ W  j6 k  Z) G
  58.                 return -1;1 m7 r  a1 P) W, e5 S$ T
  59.         }+ e3 E' ~# _. p3 J" h" }  [
  60.         arg.sub_addr_count      = 2;
    : d4 A1 i2 E' [8 n
  61.         arg.data_count          = 0x18;3 m  O" {7 t$ H, D
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 E$ ~" |+ W4 m8 n1 I8 C
  63.         arg.e2prom_cmd_data     = buf;8 E6 K4 t% R4 [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 V) i- E% t6 A& x! b
  65.         if (ret != 0) {$ C$ q: s. i& E& U$ Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' S) ]' V$ J) C9 l) w5 L
  67.                 return -1;
    0 T& B$ d9 H: `* W6 W, D
  68.         }
    $ I, z1 v9 s# J1 X$ B( |" F  b! {6 [! k
  69. 8 u9 c7 h4 }0 f
  70.         return 0;
    8 m- i: x* n/ F2 e# P
  71. }
    ' {( U1 P  T# O0 h# f

  72. 9 Q& g7 w  h* ?. F! n3 ~. s' a
  73. int main()
    / O+ [3 f& T" v' A) V, X
  74. {* ]" v3 `2 W, a: y* X' u" j/ O: a
  75.         char c;9 O) [' y, [- q9 }
  76.         int i, macs[6];
    : c+ l: T+ h6 ~
  77.         unsigned char mac[6];4 `3 j0 x2 C7 d. y# Z0 w) w: p, R
  78.         unsigned char stbid[256];
    9 Q% _. c0 ]0 |+ {( _7 Q% v3 o9 ]  k

  79. ) O( A6 m* t/ r5 O5 P0 h
  80.         if (readparam(mac, stbid) < 0)
    . O0 k  h2 J# X$ T  H" o" `
  81.                 return 1;
    9 N: l; X/ m2 g/ ^/ L" }

  82. & _7 x+ t; `. V( v6 w. O- q4 @
  83.         printf("Current parameters: \n");0 |$ C4 p7 K' p5 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % I8 w) ^) Z6 J4 ?
  85.         printf("  STBID: %s\n", stbid);
    + V8 o6 X; S( ]2 l6 s9 f# c1 d
  86.        
    : ]8 H" o; k; ]3 W- ^+ @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 i3 q% ^. W3 P  I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 u3 T+ W$ D6 B7 l0 k- v, l; O. l  G6 e
  89.                 printf("Input MAC error\n");
    6 w, {- U$ P# l1 [0 d+ r
  90.                 return 1;
    . P+ l% A. g+ y- _+ ~
  91.         }
      V# t) R9 P3 b3 I' P2 H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * K7 p% C. w0 j8 H
  93.         printf("\nPlease input new STBID: ");% r( E3 G# k+ }
  94.         scanf("%s", stbid);
    ; ~/ m4 B" }9 g, d! q
  95.         if (strlen(stbid) != 18) {
    3 g2 Y' ^* |+ t2 o: J, O
  96.                 printf("Invalid stbid\n");
    3 |3 r) z# v1 W
  97.                 return 1;
    $ H% U8 f& Y1 r& _
  98.         }4 G4 K8 [1 ^+ X9 o1 F9 M
  99.         printf("\nNew parameters: \n");+ O* ]+ c$ h% L% k8 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 U) ]4 R* ?" B# F6 x
  101.         printf("  STBID: %s\n", stbid);
    % |7 T0 L( D" V7 J! r/ J/ k8 ~( L
  102.   z6 e: J2 {# m& W2 H
  103.         printf("\nDo you want to change paramemters? (y/N) ");* u1 N; N" j- [6 d; X
  104.         for (;;) {
    ' R2 Z( v: \0 j# s) N
  105.                 c = getchar();3 A" T0 D8 \1 m+ ]$ l2 K1 n
  106.                 if (c == 'y' || c == 'Y')1 T1 L8 [' d+ |; [0 {
  107.                         break;: m' w9 g( Q" }3 A1 \+ I
  108.                 if (c == 'n' || c == 'N') {. }4 ]$ O9 @+ ?& D
  109.                         printf("\nAborted.\n");
    2 n) @1 ]6 m- k4 F: \" C
  110.                         return 1;' F  l& e" F; D; @$ T
  111.                 }
    : \' Y) e, F$ F! u% _! I
  112.         }
    7 J2 R4 i  f  b$ B6 s' T
  113.         if (writeparam(mac, stbid) == 0) - |' H7 G  i0 T6 B* y
  114.                 printf("Parameters changed.\n");
    % E' T) d9 ?: x: D/ S! B( p! O

  115. # \1 y1 S- U- P) a
  116.         return 0;/ w7 A1 M# t7 i& c, D0 Y3 u
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
6 b8 k$ i) E0 h+ T$ l, U! S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, i" V4 x# p# K2 z* r* X1 [6 s
你用的编译命令行格式是什么?
# @1 G! `$ w& G4 ]7 ?/ B
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部