找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14873|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. i3 n( i# K( `7 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. L" ^; `; Q' G9 K7 H( _6 @6 ?  I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( g6 ^7 d+ M4 d* \
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ J. T3 d( O% c3 A3 V0 I+ A8 H
+ G: m$ _% i0 R+ ]0 y- x

: R6 X; T5 w1 `4 g" k" ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  r3 v  ~& B2 |8 ]0 h/ ^  m
3 N: F3 s1 y+ @  O
补充内容 (2012-3-8 09:42):
$ d# d; J4 k$ W; K* ?6 ?http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, K1 v# F  @8 ^1 _! j  u& E/ @$ b
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! ]) M: _0 s) A3 K$ [# n

& z. c  m+ k1 s1 {7 K/ a, Xhimr <address> <value>. sample: himr 0x80040000 0x0
1 }" ?; u. \4 L, b8 t
, s( Y( H1 g# b0 x例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 X1 W) i2 \: N) U. ?, L) Phimr 0x80040000 0x00# T  n) C; N5 y! t2 ~6 t1 U/ Y
himr 0x80040001 0x11# @3 F9 b- h( U1 C3 V: l: o
himr 0x80040002 0x22  J! J' ?8 Y% [: o$ Z2 [
himr 0x80040003 0x33
' ^% a& v2 ]$ B; ?% nhimr 0x80040004 0x44
8 k. H- V& y4 P5 v2 [! qhimr 0x80040005 0x55
) i8 g& l9 @* J( j+ p" Z  R4 S. J' f) v+ l8 l9 ]% u$ |
SN也是类似。9 O& R: x0 g, z; W

0 S0 I. n3 p8 ]6 w% O# @现在主要是,谁告诉我们MAC和SN的地址?
7 A* }" j4 |* r, D$ F9 Q, T) P6 X' r+ x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( {4 K2 M- s' I8 t/ X( D+ T一直想找到运程修改MAC和SN的办法,苦于无解啊

8 W: _$ S7 d; `2 u$ f7 _4 b源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 }9 ~9 K# J8 o' T  W) o3 l8 T! ]! B' F! g
修改的代码早有了。到今天不会编译。8 S# G( h5 M, u, V* e" f, d% G
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- o! R" x; Y) C
  2. #include <malloc.h>
    - X/ `, j# x2 ^) K/ {/ }2 ^
  3. #include <sys/types.h>
    : \; i, m' v; u* z
  4. #include <sys/stat.h>7 O& O# z; O7 ^4 t$ }% `7 z: H
  5. #include <sys/ioctl.h>6 J3 @+ t% [! g: F+ n
  6. #include <stdio.h>
    3 s" j. {: a4 N
  7. #include <string.h>
    4 ^. a7 n5 D* `" d/ O9 |
  8. $ M3 Q7 c- I  V; X( |( S
  9. typedef struct {. y1 E2 w# k. |2 ^$ a2 H# t! j* |
  10.         unsigned int        e2prom_cmd_sub_addr;. f( h3 T. E+ _3 a7 d% `
  11.         unsigned int        sub_addr_count;( L4 B& y- D& A, n+ E0 S
  12.         unsigned char*        e2prom_cmd_data;
    % f, Z4 t6 n* S1 J
  13.         unsigned int        data_count;7 u1 j! H7 N' o* B
  14. } e2prom_s_cmd;9 J; L, y$ z% z+ `
  15. , i& p# a5 }5 z; E7 K( G. L- a( H& @
  16. #define E2PROM_CMD_READ 1: K, n2 Q* {/ g+ y
  17. #define E2PROM_CMD_WRITE 2
    * P- I$ _. Y% |' E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 x+ B8 L, n% |  i( ]
  19. 0 `- v- }% O( m1 V4 T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' `7 H2 k* n& t4 g- D9 x$ A! Y* A
  21. {
    5 n. p, B3 P2 @# Q& R5 r
  22.         int fd, ret;
    + n% Y# z2 T& ~9 m( W
  23.         e2prom_s_cmd arg;; V; k0 U3 j: x/ O0 \- B; W
  24.         unsigned char buf[0x18];; W% b3 X/ R$ W: O+ y

  25. 9 u! X, ~9 N8 ]: C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 c( [" N: `2 ?2 \6 A
  27.         if (fd  < 0) {5 k( e) Z0 q  |2 h; ]8 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : O8 x5 e( p' Y' L8 K. C3 j
  29.                 return -1;8 s, Y0 ^9 C: z! S# l: h( ?) t
  30.         }
    1 G2 ]+ A/ z' k3 y4 {5 B5 J
  31.         arg.sub_addr_count      = 2;
    & |$ ^1 w- Q/ y) I. K9 q
  32.         arg.data_count          = 0x18;
    7 n9 z! g. L7 d2 y9 @  x: k# p1 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " f0 w. N  ?6 k& I5 L* z7 ~
  34.         arg.e2prom_cmd_data     = buf;2 \  T( A- ?/ n1 n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : ^( j* h: z- j/ o
  36.         if (ret != 0) {
    5 H+ F; E: T7 h; J; x8 A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- ?8 f5 D% `/ d5 K* `% |) D
  38.                 return -1;, G4 q- z9 J) x9 q  c
  39.         }
    , Q- n/ z% |: `
  40.         memcpy(mac, buf, 6);& X; T: I/ t8 ^$ |: j1 c$ ^
  41.         memcpy(stbid, &buf[6], 18);; n9 w  {$ L$ N' g
  42.         stbid[18] = '\0';
    ) H6 k  L+ O- A) {, b: i, R+ `

  43. " T) u5 v3 I9 s7 Q% C$ G
  44.         return 0;
    * s+ z) B5 n: {# E6 J, j8 Z, A
  45. }
    . h) H, p1 [7 i% D
  46. * u; i) m, K  o* V! |- M! Q9 N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)8 H$ X& O) i& }# h6 x8 c. @
  48. {; P7 f' ?8 P! Y9 Q
  49.         int fd, ret;' d  C9 |% I! L; A+ H9 a
  50.         e2prom_s_cmd arg;' q2 x5 e/ k4 ~; S* W
  51.         unsigned char buf[0x18];5 Z7 h0 c5 h. t7 v, o+ K9 C* F
  52. : ]0 Y2 L5 N  _
  53.         memcpy(buf, mac, 6);( T* y' L- D! k$ X9 Q0 D
  54.         memcpy(&buf[6], stbid, 18);) [1 B1 w& U+ h" ?8 F, l; [0 r. O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) V" s: x- u1 ]( f- i! J' S2 N
  56.         if (fd  < 0) {
    & ?9 s7 G: b  p8 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ m& B, j* D( h3 s+ T: G4 I! ^
  58.                 return -1;9 E. ]/ \2 G  Y# Z
  59.         }
    1 C4 Z6 V* p) }3 ?1 ^4 v
  60.         arg.sub_addr_count      = 2;
    " v7 ?) e1 T, p9 ?/ Y, n
  61.         arg.data_count          = 0x18;9 T* a2 I9 k. S/ `6 n# V+ E
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 k2 N' o6 i+ {5 W- W, k
  63.         arg.e2prom_cmd_data     = buf;5 W( [. G- I; J+ _9 e! [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ _% W& I, L* x. y" X' C0 A* B' o
  65.         if (ret != 0) {3 A7 w+ C4 f1 r6 p, g' v* _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. ^% B) a7 T7 y, o; G" r
  67.                 return -1;
    % T4 Q7 B6 ~- \
  68.         }
    6 R4 K. \: T: j1 `9 n+ w

  69. ! a: w. l" y3 F) j% d9 g% t
  70.         return 0;
    * e* h" M" ]- N9 B% l' X
  71. }
    / ?% S5 X( b# W9 y: b, c9 e

  72. ; l. J2 ?( g" s' a
  73. int main(). Y+ a5 G  f4 N* D
  74. {
    . k, m) v" e7 j7 ]) z0 g% a
  75.         char c;
    8 N/ y& L  C7 w8 }" @
  76.         int i, macs[6];
    1 n, |6 x/ s7 C2 w
  77.         unsigned char mac[6];
    4 a( ~9 T9 p" b9 D+ k: w
  78.         unsigned char stbid[256];6 |4 j. n: O- \3 ~& x5 L* N

  79.   ?; h& O( U: h! L) k" F
  80.         if (readparam(mac, stbid) < 0)/ ~  w! l0 j5 e
  81.                 return 1;, e9 X3 K& z) z
  82. " g7 J( [" y7 r  h0 x2 R! L3 G
  83.         printf("Current parameters: \n");# R' l& @1 v- _4 I% ~) X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % x/ L% h2 w* l2 t* b
  85.         printf("  STBID: %s\n", stbid);
    ' i# n0 b+ C# E0 t% h
  86.        
    1 V* b+ a& L7 F  x6 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( D# F* H9 }6 r5 j/ |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . Y1 Y: P* b" V: `/ P" D1 J
  89.                 printf("Input MAC error\n");, p! q1 _5 H! [5 S/ Y3 s" k
  90.                 return 1;! l4 i' C9 X9 f
  91.         }; o) n6 f- y2 \7 g: K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , ]6 P6 X6 _, N" V6 b, M
  93.         printf("\nPlease input new STBID: ");8 }* r3 F0 v2 _. I# v* E6 T1 s
  94.         scanf("%s", stbid);& K! C$ w- C2 o$ ?
  95.         if (strlen(stbid) != 18) {4 k4 ]' q- Y% X1 e- W6 b
  96.                 printf("Invalid stbid\n");
    ( p% W! [' f. _: `& d
  97.                 return 1;; \; O- L; G9 Q6 ?0 C8 {
  98.         }
    3 S5 U# V% x6 H
  99.         printf("\nNew parameters: \n");
    5 y. t/ M2 M0 Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- c$ V' ?# v/ U3 K7 g* ]6 C: Y% D
  101.         printf("  STBID: %s\n", stbid);
    ( z9 H! x3 `3 P8 V

  102. + i8 B, M/ N9 O3 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");' Q$ c1 z# _# e2 l0 v
  104.         for (;;) {
    " T# g9 N* S  d: T5 p- q
  105.                 c = getchar();* `: v0 Q( P$ _/ }, O4 o
  106.                 if (c == 'y' || c == 'Y')
    6 G7 a# B7 C+ m2 w, A: L! U4 S
  107.                         break;
    : L$ q1 d* V- l  \
  108.                 if (c == 'n' || c == 'N') {( S5 K) F! |* Z1 v; s! s" `5 G' s# }! z
  109.                         printf("\nAborted.\n");. X5 _* {4 R! |# H
  110.                         return 1;
    9 y6 [$ J1 G2 _. ~. o2 ~
  111.                 }% m4 u9 E+ O  a4 }- Y
  112.         }
    $ S+ I: a5 q' V( k
  113.         if (writeparam(mac, stbid) == 0)
    5 Z) s( Q, M- q) S! v
  114.                 printf("Parameters changed.\n");
    " T$ f  s% ^' Z! s

  115. . H. l3 f# K" m0 D) {% P6 ~: V$ H3 v
  116.         return 0;% ^3 B6 m5 a" P# g: A' }$ d) b
  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 0 O: j+ w/ X) V( G% d3 F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( \9 P4 r6 T' o' J/ _% s你用的编译命令行格式是什么?
- u& g# a+ R2 {6 |, ?' l7 M4 z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-21 21:51 , Processed in 0.030888 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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