找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15288|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 g" k% {( E  J- Q* N: f" i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ e1 O8 a' {7 m% C2 D* p' r0 Z, s* s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; X( r4 R! I6 A  b2 {) Yusage: himr <address> <value>. sample: himr 0x80040000 0x0# @- c8 ~) ^  C/ a% {8 H2 B& ?

# C- w2 H* z4 O* n( W+ |9 x" i8 ]: c  u
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 S- |* ]9 u* `, E
' w: G* B: }& h+ g) C  _# d
补充内容 (2012-3-8 09:42):
& M! ?3 x" Z! D/ V, Rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ h* n" [2 h+ P& F* \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
$ S+ W5 V+ B- P; p
* J0 g. V% K( X0 Uhimr <address> <value>. sample: himr 0x80040000 0x0
) e  @7 H* t1 x- b# b6 w+ x% |3 @- S: z1 H3 U# \$ g( u/ c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 ]8 B; U( F! U, [! ^' H, M7 L
himr 0x80040000 0x00; l0 U' `* Y% _/ h* T1 e) G
himr 0x80040001 0x11$ i- s2 ?& L) ?0 k8 }- m
himr 0x80040002 0x22
5 `$ Q8 Z4 n5 A( o) N" s( Rhimr 0x80040003 0x33
/ [( I0 C# e6 b$ Y" C; khimr 0x80040004 0x449 o" h' k1 y! x1 g5 |
himr 0x80040005 0x554 G6 v4 V4 c* ~
$ F, G& Q3 v! v0 f: ~% {
SN也是类似。
3 ]! W- |, H, t
' b& V! t6 F& F7 r3 d% O$ F7 s( |现在主要是,谁告诉我们MAC和SN的地址?" B( y3 o6 E. s
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ I# g1 z/ g2 c一直想找到运程修改MAC和SN的办法,苦于无解啊
7 ~, i6 O, m5 o1 I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " c9 }, L4 c5 B, @& F# A, |
! m  X, M1 l; B8 @9 J8 |* R
修改的代码早有了。到今天不会编译。
( O  \9 {* H: Z. q# B需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & ?: B" G; v5 D) Y8 R  ~
  2. #include <malloc.h># K" f! _: d8 c7 P' {
  3. #include <sys/types.h>
    ' S" l; r5 l* Y6 _6 A' W8 H( T- s% `
  4. #include <sys/stat.h>
    3 P! s2 o7 [, ]9 N% D8 I8 X; Q
  5. #include <sys/ioctl.h>
    . b3 Y2 s' }! E! f
  6. #include <stdio.h>
    ' ]' b# u4 Q- a. U% q7 C$ }8 n
  7. #include <string.h>% Y, j! J, O' q5 u0 y

  8. ) m  Z5 m, I' v3 W: K: ?
  9. typedef struct {: o* ~$ |2 g$ [3 k
  10.         unsigned int        e2prom_cmd_sub_addr;
    / Y( h  b; k  m" W+ [! L& ~
  11.         unsigned int        sub_addr_count;
    - u! g/ t7 d' ^: e, Q
  12.         unsigned char*        e2prom_cmd_data;5 V# _  P9 v+ U, X1 q
  13.         unsigned int        data_count;0 S( o2 V2 V: I3 g0 K7 A* Y% ~
  14. } e2prom_s_cmd;
    9 `' V( u2 h1 _
  15. 1 d% g: G. k/ P" w( S" a( V2 T
  16. #define E2PROM_CMD_READ 14 ^: t  }) h1 R% m( m
  17. #define E2PROM_CMD_WRITE 27 T3 [  f7 }* Y# E% `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      E1 |5 w$ S$ l( T& l1 n

  19. 5 a% Y" ?, ]0 x: A( R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 _# J# ]2 a! w+ s
  21. {
    . @! |) D0 S0 o! p2 Q5 Z- L; j
  22.         int fd, ret;
    2 g* T# ^: s  G+ M
  23.         e2prom_s_cmd arg;6 C  v& d0 s( P& E" Z
  24.         unsigned char buf[0x18];0 s$ b) Z) i% Q! x- K
  25. * W+ h/ @& V  J# i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ I( @  N8 {( `
  27.         if (fd  < 0) {
    6 }. F2 |* A! U# K( o
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 d8 M- _/ J6 p. }
  29.                 return -1;& \3 u% S# l2 w
  30.         }8 M. T/ j$ U, r, L  \8 `2 e/ G
  31.         arg.sub_addr_count      = 2;
    & g  F( \5 x) n/ l# S# F) K( r
  32.         arg.data_count          = 0x18;
    # |' ]$ _- z  Y. |2 K9 y8 @; F
  33.         arg.e2prom_cmd_sub_addr = 0x290;! q0 B* a2 H$ f  [8 k
  34.         arg.e2prom_cmd_data     = buf;) C4 J: C3 d7 M9 Q/ O9 s7 E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( {, }: l  j0 ^* \: Z2 ]
  36.         if (ret != 0) {
    4 m( ~' g1 ]4 [: T0 m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 B; a6 J, a9 L4 B  p) ~- c) ]
  38.                 return -1;1 [# z9 a9 k! o/ F
  39.         }# j1 k$ T/ W! Z0 O
  40.         memcpy(mac, buf, 6);
    6 ^( x: X; t) F, O: ?5 d9 T2 p
  41.         memcpy(stbid, &buf[6], 18);
    . Q! b3 A- p/ t9 r) d( |3 c/ G0 t
  42.         stbid[18] = '\0';
    4 v+ G$ q9 |- K! x. f5 f

  43. ' g3 Q$ e( l+ W3 P- _) |& C/ S
  44.         return 0;( b% V2 I1 E0 q' |/ m! s/ u+ m
  45. }
    1 W' e4 D" y+ ~
  46. & e; G9 @% R1 g  T1 l- I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): x& H( U5 `. H) B" E( D% P
  48. {
    , {6 u+ I& `% o8 j
  49.         int fd, ret;
    1 P5 W8 ~, Q: X# g2 n. C& W
  50.         e2prom_s_cmd arg;
    4 p% O1 i9 A! P5 o1 L, x% y
  51.         unsigned char buf[0x18];! ?6 Q2 K7 K, l% e/ Q# |

  52. , P4 T" X# {3 W/ ?
  53.         memcpy(buf, mac, 6);
    1 ~4 Q& W% z* m3 Y8 _( z
  54.         memcpy(&buf[6], stbid, 18);1 J% L6 }/ K, l: T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ @& }# i/ |6 Y# Z1 m1 L# q3 y
  56.         if (fd  < 0) {
    ; E7 a6 _# `, `, i6 H$ K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 q$ `. S1 z0 F0 c1 ^: ~
  58.                 return -1;
    . \& s$ w* U5 i
  59.         }
    0 D2 V- m7 l" B& E
  60.         arg.sub_addr_count      = 2;
    3 g. x2 l+ r# c3 d/ w, z1 U
  61.         arg.data_count          = 0x18;
    ) M9 D4 I4 u5 C0 O5 i, l) U$ G7 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 N: F7 Y8 |5 M2 J+ I4 V) n7 R
  63.         arg.e2prom_cmd_data     = buf;
    3 G+ B$ _2 @# f2 m1 A2 ]4 L  b: W/ ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; Q; _, w& f" p- \
  65.         if (ret != 0) {: y( @- v  O3 A9 [5 K+ f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 G' u' {4 X7 }* W; }9 y7 o  `! H
  67.                 return -1;
    ! V" d7 o. T+ K1 f( y0 y' r; \2 D
  68.         }( p: O# C# d6 F$ A

  69. " M; \( P" }/ Y/ R0 w
  70.         return 0;0 l- A( u% a! y* d1 p+ d% M
  71. }
    - l6 b; ~& Y6 L' }8 s1 |- Y# }6 \

  72. ( l3 m/ b. p& C+ `
  73. int main(): S4 B: ]7 j" @) s
  74. {+ A- S- ]  J$ V6 j+ m
  75.         char c;
    ; R8 @9 B5 j# S! @) q2 }$ T2 f
  76.         int i, macs[6];
    6 y1 f2 r* z, H" N
  77.         unsigned char mac[6];9 E- K+ U3 A4 H
  78.         unsigned char stbid[256];
    8 A% u* f# Z8 h7 t: b1 `. ^7 V5 |

  79. 7 M/ }, y3 T& W. u
  80.         if (readparam(mac, stbid) < 0)9 S) e$ F% f+ N+ [% |' F- f
  81.                 return 1;
    3 [7 @4 L, K/ R. i, ]' _: E

  82. 0 o: A+ l: m; z( M' g
  83.         printf("Current parameters: \n");
    9 f( ?; L+ e2 ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 P$ f. X3 N  _9 `
  85.         printf("  STBID: %s\n", stbid);/ b9 o* s: Q) D- e
  86.        
    9 i7 }! L, n: E0 o% v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) T8 D. W( D& B- H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 F5 S) i- Z- n. C
  89.                 printf("Input MAC error\n");, v2 |) v$ {: r5 a/ B4 X
  90.                 return 1;' w. m; D! y! n" O* v! |6 v
  91.         }
    ; c- ~7 J2 f: i+ }3 N( E5 e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ U4 V1 x4 X# s7 p
  93.         printf("\nPlease input new STBID: ");
    ! }1 V! k; c: a% m) q6 U
  94.         scanf("%s", stbid);8 Y/ g/ F" W3 V+ q
  95.         if (strlen(stbid) != 18) {
    $ Y+ b% a5 {  Z5 d
  96.                 printf("Invalid stbid\n");
      ]- ~" ?( d! {  L% Q$ X* {
  97.                 return 1;
    * }8 n7 p) @1 j9 L% a3 {- {
  98.         }
    . k% H: I$ k- U
  99.         printf("\nNew parameters: \n");5 o; N0 k4 K- u6 P6 T: }$ D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , X, j- D) B: g6 F0 r) R: C; \
  101.         printf("  STBID: %s\n", stbid);
    7 H7 K0 Q/ b' M+ o4 Q

  102. . N5 J8 N2 D8 N2 L! {' q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    7 ?1 `8 c5 c0 z$ [' O; o' I
  104.         for (;;) {+ \! z, @, o  k
  105.                 c = getchar();9 V: B, m1 Z  z+ q3 [4 W  h5 i
  106.                 if (c == 'y' || c == 'Y')6 T$ v& R/ b2 k1 D" i
  107.                         break;/ N. l$ P% H3 `9 h1 L4 }4 W
  108.                 if (c == 'n' || c == 'N') {& s6 [8 b/ `/ `( b: E# O4 m) z: |; ?
  109.                         printf("\nAborted.\n");8 T4 g" h$ e, j
  110.                         return 1;, l+ W! {- _$ a2 ^* |2 r: x5 [
  111.                 }
    . w% r4 J$ d9 @# ~% k+ F5 F( _
  112.         }8 q- O  l3 k+ ?6 Z
  113.         if (writeparam(mac, stbid) == 0) " i5 J: i0 G% A) x5 F' ]* C2 ]2 i6 e
  114.                 printf("Parameters changed.\n");
    1 F/ g, \* X% O
  115. * o: v# p' Y, E  P9 g0 F
  116.         return 0;% o. q/ O  i! e0 b6 z9 ~$ x
  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 & J. H- U9 K8 w9 W0 ?, s7 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# K" K7 K1 E4 [" F8 Z( Y
你用的编译命令行格式是什么?+ q% b6 i5 P: P: E" u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-16 15:35 , Processed in 0.032938 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表